2014-01-31 5 views
0

Я провел несколько часов, играя с моим обратным вызовом, но он отказывается работать! «попробовать» выходы на консоль отлично, но он всегда отказывается выводить «обратный вызов здесь» .... Я что-то пропустил?NodeJS Callbacks

Я ранее имеет выход вар = job.runJob (.... который работал хорошо, но мне нужно добавить в некоторых асинхронном джаз для работы, чтобы бежать!

jobscheduler.js

job = require("./job"), 

console.log('trying'); 
job.runJob(item.definition,item.vars,item._id, function(callback) { 
    console.log('['+item._id+'] Job output = '+callback); 
    console.log('callback here'); 

    // Update job nextrun time 
    var nextrun = new Date(); 
    nextrun.setSeconds(nextrun.getSeconds() + 10); 

    collection.update({'_id':item._id}, {$set: {nextrun:nextrun}}, {safe:true}, function(err, result) { 
     if (err) { 
       console.log('Error updating item: ' + err); 
      } else { 
       console.log('['+item._id+'] Job was updated. Next run is '+nextrun); 
      } 
     }); 
}); 

job.js

var jobdef = require("./jobdef"); 

module.exports = { 
    runJob : function(job,vars,jobid){ 
     if (typeof jobdef[job] == 'function') { 
      var output = jobdef[job](vars,jobid); 
      return output; 
     } else { 
      console.log('['+jobid+'] Job def \'%s\' does not exist. Check jobdef.js for definitions.',job); 
     } 
    } 
}; 

jofdef.js

module.exports = { 
    ping : function(vars,jobid){ 
     return('Were in ping'); 
    }, 

    urlopen : function(vars,jobid){ 
     return('Were in urlopen'); 
    }, 

    findstr : function(vars,jobid){ 
     return('Were in findstr'); 
    } 
}; 

ответ

1

Вы передаете четыре аргумента runeob, но runjob принимает только 3 аргумента. Измените определение runjob следующим образом:

module.exports = { 
    runJob : function(job, vars, jobid, callback){ 
     if (typeof jobdef[job] == 'function') { 
      var output = jobdef[job](vars,jobid); 
      if (typeof callback === 'function') 
       callback(output); 
     } else { 
      console.log('['+jobid+'] Job def \'%s\' does not exist. Check jobdef.js for definitions.',job); 
     } 
    } 
};