我需要在 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 )
关于javascript - Node.js 中的并行函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035015/