nodejs:在执行之前等待其他方法完成

yao*_*ing 6 javascript node.js

说我有2种方法:

function A(callback) { ... }
function B(callback) { ... }
Run Code Online (Sandbox Code Playgroud)

我想执行:
function C();
A和B都完成后.
我们通常做的是将函数C放在回调中,如:

A(function() {
  B(function() {
    C();
  });
});
Run Code Online (Sandbox Code Playgroud)

现在如果A和B都需要很长时间,我不希望B在A完成后执行.相反,我想同时启动它们以提高性能.
我在想的是实现类似信号量的东西(当然不是真正的信号量),它会在A和B都完成后触发事件.这样我就可以在活动中打电话给C.

我想知道的是,是否有任何库已实现上述功能?我相信我不是第一个想要这样做的人.
任何帮助表示赞赏.

Jon*_*ski 5

扩展我的评论......

async是Node.js 常用的异步流控制库.

async.parallel()可能会做得很好:

async.parallel([
    function(done) {
        A(function () {
            done(null);
        });
    },

    function(done) {
        B(function () {
            done(null);
        });
    }
], function (err) {
    C();
});
Run Code Online (Sandbox Code Playgroud)

这可能会缩短,但这取决于每个函数如何与回调交互,以及它们是否遵循error-first回调的常见Node.js模式:

async.parallel([A, B], C);
Run Code Online (Sandbox Code Playgroud)