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*()方法返回承诺)