【发布时间】:2014-03-05 07:25:21
【问题描述】:
我需要在一个循环中执行一系列 MySQL 插入,然后在它们都完成后做一些事情。但是,我不确定将回调放在哪里--
for (var q=0; q<things.length; q++)
{
thing
.create({
active_time: time
rule: rule
next: next_object,
percentage: object.percent,
enabled: 1,
})
.complete(function(err, newSchedule) {
console.log('thing added successfully');
})
}
我不能把它放在 .complete 部分,因为它需要在所有这些之后发生。在继续之前,我如何确保它们都已完成?
编辑: 我已经开始使用 AsyncJS,但似乎 MySQL 查询会在完成之前回调。这是新代码:
if (valid) {
async.each(arrayOfObjects, tools.submitThing, function()
{
console.log("finished submissions")
});
和
exports.submitThing = function(thingObject, callback) {
thing
.create({
active_time: time
rule: rule
next: next_object,
percentage: object.percent,
enabled: 1,
})
.complete(function(err, newSchedule) {
console.log('thing added successfully');
})
callback();
}
服务器控制台显示消息“提交完成”在 MySQL 插入之前注册。有什么办法可以解决这个问题?
【问题讨论】:
标签: javascript mysql node.js asynchronous async.js