Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS回调_Javascript_Node.js_Callback - Fatal编程技术网

Javascript NodeJS回调

Javascript NodeJS回调,javascript,node.js,callback,Javascript,Node.js,Callback,我花了几个小时玩我的回调,但它拒绝工作尝试“输出到控制台很好,但它总是拒绝输出“回调到这里”。。。。我错过什么了吗 我以前有var output=job.runJob(..),它工作得很好,但我需要添加一些异步jazz来运行作业 jobscheduler.js job = require("./job"), console.log('trying'); job.runJob(item.definition,item.vars,item._id, function(callback) {

我花了几个小时玩我的回调,但它拒绝工作尝试“输出到控制台很好,但它总是拒绝输出“回调到这里”。。。。我错过什么了吗

我以前有var output=job.runJob(..),它工作得很好,但我需要添加一些异步jazz来运行作业

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');
    }
};

您正在向runjob传递四个参数,但runjob只接受三个参数。请更改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);
        }
    }
};