nodejs / js:即使在回调之后,也只执行async.series的第一个函数

时间:2017-05-04 08:52:02

标签: javascript node.js

只执行async.series的第一个函数,第二个函数甚至没有为以下代码启动:

var async = require("async");
var src = 0;
async.series([
    function(callback) {
        callback("Called from 1");
    },
    function(callback){
        callback("Called from 2"); 
    }]
, function (desc) {
           console.log(desc)
           src++           
           console.log(src+".1."+"--->"+src)
           console.log(src+".2."+"now it should return")            
        }
    );

知道为什么没有达到第二个?

输出:

Called from 1
1.1.--->1
1.2.now it should return

3 个答案:

答案 0 :(得分:4)

我相信回调的第一个参数应该是null回调(null,“从1调用”)

答案 1 :(得分:2)

谢谢Fadi。 只是详细说明,这里的回调是强制签名 err,desc,..... other args 。 正如所观察到的那样,每当我在第一个参数中传递一个非空或非假值时,执行就会停止,然后 - 没有串行执行下一个函数,即在收到第一个真正的错误时停止。

另外,我假设在执行每个系列函数后将调用回调函数,但在执行了所有函数函数后实际调用它。

整改如下:

var async = require("async");
var src = 0;
async.series([
    function(callback) {
        callback(null,"Called from 1");
    },
    function(callback){
        callback(false,"Called from 2"); 
    }]
, function (err,desc) {
           console.log(desc)
           src++           
           console.log(src+".1."+"--->"+src)
           console.log(src+".2."+"now it should return")            
        }
    );

输出:

[ 'Called from 1', 'Called from 2' ]
1.1.--->1
1.2.now it should return

答案 2 :(得分:0)

回调函数中的第一个参数应为null,如下所示:

callback(null, "Called from 1");

https://caolan.github.io/async/docs.html#series