【发布时间】:2016-04-15 13:27:41
【问题描述】:
我正在使用下面的代码来执行一组查询并发送对查询结果进行一些验证的响应。对于这种情况,我在 Node JS 中使用异步模块。
async.series([
function(callback){
common.commonValidations(db);
callback();
},
function(callback){
console.log('second function');
res.end(JSON.stringify(gErrors));
callback();
}
], function(err){
console.log('sending res to client');
console.log(err);
});
common.commonValidations(db) 函数用于执行一些 db2 查询。
我的问题是,虽然我使用的是异步模块,但在查询执行过程中响应会发送到客户端。根据我对异步模块的理解,数组中的第二个函数在第一个函数完成工作后执行。
有人可以帮我解决这个问题吗?提前致谢。
【问题讨论】:
-
你的问题是什么?
-
让我猜猜,
common.commonValidations(db)也是异步函数?问题是,它是async,这意味着第一个函数会立即执行并完成,它不会等待common.commonValidations得到响应,这就是发送响应(即第二个函数)几乎立即执行的原因。 -
@Quentin 我的问题是,如何修复我的代码以仅在执行所有查询并完成验证后才发回响应?
-
@NaveenChappa — 在查询完成之前不要调用回调。
-
@Adam,当调用转到第二个函数时,第一个函数仍在执行查询。第一个功能没有完成它的工作。有什么解决方案可以让第一个函数等待查询结果验证完成?
标签: javascript node.js