【发布时间】:2013-07-24 23:08:58
【问题描述】:
我将 express 和 async.js 用于节点应用程序。我的 app.js 中有这段代码:
var resultObject = {};
app.get('/average', function(req, res) {
async.series([
function(callback) {
//This does some complex computations and updates the resultObject
routes.avg(req.query.url, resultObject);
console.log('1');
callback();
}
,
function(callback) {
res.send(resultObject);
console.log('2');
callback();
}
]);
});
问题是 res.send(...) 在第一个函数中的复杂计算完成之前触发。因此,发送的对象是空的。我的代码中是否有错误,或者我没有正确使用 async.js?
【问题讨论】:
-
根据您粘贴的代码,resultObject 无论如何都会为空,除非 routes.avg 修改它。你有剩下的代码吗?方法被乱序执行似乎不太合理。
-
这正是它所做的,它修改了resultObject。问题是 res.send() 在修改对象的函数完成计算之前触发。
-
routes.avg 是异步方法吗?
-
是的。不知道是不是问题是方法是导出的,而不是直接在app.js中用回调调用的。