Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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 在node.js中为async.series定义回调的位置_Javascript_Node.js_Asynchronous_Callback - Fatal编程技术网

Javascript 在node.js中为async.series定义回调的位置

Javascript 在node.js中为async.series定义回调的位置,javascript,node.js,asynchronous,callback,Javascript,Node.js,Asynchronous,Callback,我希望在异步任务完成时调用回调。以下是相同的代码: var async = require("async"); function callMeWhenDone(err, result){ if(err) console.log('Error Occurred'); console.log('Callback called'); console.dir(result); } function tasks() { console.log('Start execut

我希望在异步任务完成时调用回调。以下是相同的代码:

var async = require("async");

function callMeWhenDone(err, result){
    if(err) console.log('Error Occurred');
    console.log('Callback called');
    console.dir(result);
}

function tasks() {
    console.log('Start executing tasks');
    var tasks = [];
    var result = {};

    tasks.push(function(callMeWhenDone) {
        console.log('Getting some data');
        callMeWhenDone(null, result);
    });
    tasks.push(function(callMeWhenDone) {
        console.log('Second function called');
        callMeWhenDone(null, result);
    });

    async.series(tasks, function(err, result){
        console.log('All done');
        callMeWhenDone(err, result);
    });
}

tasks();
在上面的代码中,
callMeWhenDone
callback方法在异步任务完成后未被调用


如何在异步任务中调用它。

这是因为您为
async
任务回调参数指定了与
callMeWhenDone
相同的名称。为该参数指定一个不同的名称,如
cb
,然后在每个任务完成时调用它们:

function tasks() {
    console.log('Start executing tasks');
    var tasks = [];
    var result = {};

    tasks.push(function(cb) {
        console.log('Getting some data');
        callMeWhenDone(null, result);
        cb(null, result);

    });
    tasks.push(function(cb) {
        console.log('Second function called');
        callMeWhenDone(null, result);
        cb(null, result);
    });

    async.series(tasks, function(err, result){
        console.log('All done');
        callMeWhenDone(err, result);
    });
}