我有一个数组需要附加到数据库,条件是,元素必须一个接一个地附加以使其工作,以下是我的代码,似乎命令不是按顺序执行,我的代码有什么问题:感谢。
var B = require('bluebird')
var appends = []
recs.forEach(function (item) {
appends.push(dao.append_rec_cartAsync(item))
})
B.all(appends).then(function () {
console.log('all done')
})
答案 0 :(得分:0)
当您致电dao.append_rec_cartAsync(item)
时,您正在执行异步操作。一旦它开始,你就无法对它的运行做任何事情。另请注意,Promise.all
不是按顺序执行,而是并行执行。
var B = require('bluebird');
B.each(recs, function(item){ // note we use B.each and not forEach here
// we return the promise so it knows it's done
return dao.append_recs_cartAsync(item);
}).then(function(){
console.log("all done!")
});
或简而言之:B.each(recs, dao.append_recs_cartAsync)