一尘不染

对Node.js的async.parallel()的调用是否同步?

node.js

我正在研究Node.js的async模块来解决问题。我已经进行了一些测试:

var async = require("async");

function print(val) {
    console.log(val);
}

async.parallel([
    function(cb){ print(1); cb(null); },
    function(cb){ print(2); cb(null); },
    function(cb){ print(3); cb(null); },
    function(cb){ print(4); cb(null); },
    function(cb){ print(5); cb(null); }
],
    function(err) {
        if ( err ) {
            console.error(err);
            return;
        }
        console.log("Done!");
    }
);

console.log("Trulu");

我可以确定在完成对Trulu的日志调用之前永远不会调用async.parallel它吗?换句话说,是否可以肯定在Trulu日志被调用之前调用所有函数和最终回调?


阅读 223

收藏
2020-07-07

共1个答案

一尘不染

我可以确定在对async.parallel的调用完成之前永远不会调用Trulu日志调用吗?

电话本身,是的。

换句话说,是所有功能

我想是的,尽管文档没有提及。但是,我希望不会有任何更改,因为那样可能会破坏现有代码。

确定在Trulu日志之前调用的最终回调是吗?

否。您不知道这些函数,并且当它们异步时,最终的回调将在之后执行Trulu。如果所有功能都是同步的,则async无论如何都不要使用。实际上,尽管async.js确实在setImmediate
内部使用,所以某些回调(不幸的是难以识别)将被“异步化”,但维护者表示

是的,使函数异步取决于开发人员

如果要确保始终以异步方式(在之后Trulu)调用回调,即使函数是同步的,也可以考虑使用兼容A
+的Promises

2020-07-07