Javascript 未按顺序执行MySQL查询(NodeJS)
我需要在一个循环中执行一系列MySQL插入,然后在它们全部完成后执行一些操作。但是,我不确定回调放在哪里-- 及Javascript 未按顺序执行MySQL查询(NodeJS),javascript,mysql,node.js,asynchronous,async.js,Javascript,Mysql,Node.js,Asynchronous,Async.js,我需要在一个循环中执行一系列MySQL插入,然后在它们全部完成后执行一些操作。但是,我不确定回调放在哪里-- 及 服务器控制台显示消息“提交完成”在MySQL插入之前注册。有什么办法可以解决这个问题吗?您需要的是一个异步控制流库来处理按顺序执行异步函数循环的问题 查看asyncnpm模块(),尤其是async.eachSeries函数。这将允许您循环所有内容,并针对每个内容,逐个运行创建查询。插入完毕后,您将有一个最后的回调函数。我尝试了这个方法,但在我看来,MySQL查询将立即启动操作并回调,
服务器控制台显示消息“提交完成”在MySQL插入之前注册。有什么办法可以解决这个问题吗?您需要的是一个异步控制流库来处理按顺序执行异步函数循环的问题
查看
async
npm模块(),尤其是async.eachSeries
函数。这将允许您循环所有内容
,并针对每个内容
,逐个运行创建查询。插入完毕后,您将有一个最后的回调函数。我尝试了这个方法,但在我看来,MySQL查询将立即启动操作并回调,即使它们没有完成。是这样吗?在函数内部调用callback()
。完成函数而不是在函数外部,然后就可以开始了.complete(函数(err,newSchedule){console.log('thing added successfully');callback();}
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');
})
}
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();
}