0
我需要在一个循环中执行一系列MySQL插入,然后在完成所有事情后执行一些操作。不过,我不知道在哪里回调 -MySQL查询没有被顺序执行(NodeJS)
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的插入之前寄存器。任何方式来解决这个问题?
我试过了,但在我看来,MySQL查询会立即开始操作和回调,即使它们还没有完成。是这样吗? – erythraios
在'.complete'函数内部调用'callback()'而不是在外部,那么你应该很好。 '.complete(函数(ERR,newSchedule){ \t的console.log( '成功添加的东西'); \t回调();} ' – pauljz
感谢你,没有的伎俩! – erythraios