在 node.js 中为 async.series 定义回调的位置
Where to define callback for async.series in node.js
我想在异步任务完成时调用回调。以下是相同的代码:
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
回调方法在异步任务完成后没有被调用。
如何在异步任务中调用它。
那是因为您为 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);
});
}
我想在异步任务完成时调用回调。以下是相同的代码:
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
回调方法在异步任务完成后没有被调用。
如何在异步任务中调用它。
那是因为您为 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);
});
}