node.js上的async / flow系列

时间:2014-08-06 16:38:53

标签: node.js asynchronous

考虑以下代码:

var async = require('async');

var a = function()
{
    console.log("Hello ");
};
var b = function()
{
    console.log("World");
};


async.series(
[
    a,b
]
    );

输出是 Hello

为什么World不属于输出?

2 个答案:

答案 0 :(得分:3)

async.series函数将一个回调传递给在调用下一个方法之前必须调用的每个方法。如果您更改功能ab以调用该功能,则可以使用。

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中调用的每个方法,都会传递一个必须运行的回调方法,您在示例中忽略该方法。

The docs say

  

任务 - 包含要运行的函数的数组或对象,每个函数   传递一个回调(错误,结果)它必须在完成时调用   错误错误(可以为null)和可选的结果值。

您的代码在第一个方法之后停止的原因是回调未运行,series假定发生错误并停止运行。

要解决此问题,您必须按以下方式重写每个方法:

var b = function(callback)
{
    console.log("World");
    callback(null, null) // error, errorValue
};