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