Node.js中的并行函数调用

Pet*_*jci 7 javascript asynchronous function node.js

我需要在Node.js中做一些独立的数据库查询.执行完所有查询后,应发送响应.我的第一次尝试看起来像这样:

templateData = {};

model.getA(function(result) {
    templateData.A = result;

    model.getB(function(result) {
        templateData.B = result;

        model.getC(function(result) {
            templateData.C = result;

            response.send('template', templateData);
        })
    })
});
Run Code Online (Sandbox Code Playgroud)

当然,Node.js中的这种方法一点也不好,因为所有函数都是顺序调用的,而我正在失去异步编程模式的优点.我是新来的Node.js和它仍然不清楚我如何调用getA(),getB()getC()在并行,并将响应一切都完了之后.是否有一些非常简单和常见的方法来实现这一目标?

SLa*_*aks 13

使用异步包 :( npm install async)

async.parallel([
    function(){ ... },
    function(){ ... }
], callback);
Run Code Online (Sandbox Code Playgroud)

https://github.com/caolan/async#parallel

或者,您可以使用承诺:

Q.spread(
    [ model.getA(), model.getB(), model.getC() ],
    function(a, b, c) {
        // set templateData
        return templateData;
    }
).then(...);
Run Code Online (Sandbox Code Playgroud)

(假设get*()方法返回承诺)