我需要在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);
})
})
});
当然,Node.js中的这种方法一点也不好,因为所有功能都被顺序调用,并且我失去了异步编程模式的优势。我是Node.js的新手,但我仍然不清楚如何并行调用
getA()
,getB()
和getC()
并在一切完成后发送响应。是否有一些真正简单通用的方法来实现这一目标? 最佳答案
使用async package:(npm install async
)
async.parallel([
function(){ ... },
function(){ ... }
], callback);
https://github.com/caolan/async#parallel
另外,您可以使用promises:
Q.spread(
[ model.getA(), model.getB(), model.getC() ],
function(a, b, c) {
// set templateData
return templateData;
}
).then(...);
(假设
get*()
方法返回promise)