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