考虑以下代码:
var async = require('async');
var a = function()
{
console.log("Hello ");
};
var b = function()
{
console.log("World");
};
async.series(
[
a,b
]
);
输出是
Hello
为什么World
不属于输出?
答案 0 :(得分:3)
async.series函数将一个回调传递给在调用下一个方法之前必须调用的每个方法。如果您更改功能a
和b
以调用该功能,则可以使用。
function a(done){
console.log('hello');
done(null, null); // err, value
}
function b(done){
console.log('world');
done(null, null); // err, value
}
答案 1 :(得分:2)
对于在series
中调用的每个方法,都会传递一个必须运行的回调方法,您在示例中忽略该方法。
任务 - 包含要运行的函数的数组或对象,每个函数 传递一个回调(错误,结果)它必须在完成时调用 错误错误(可以为null)和可选的结果值。
您的代码在第一个方法之后停止的原因是回调未运行,series
假定发生错误并停止运行。
要解决此问题,您必须按以下方式重写每个方法:
var b = function(callback)
{
console.log("World");
callback(null, null) // error, errorValue
};