我有一个数组需要附加到数据库,条件是,元素必须一个接一个地附加才能使其工作,以下是我的代码,似乎命令没有按顺序执行,我的代码有什么问题:谢谢。
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')
})
最佳答案
当您调用 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)
关于node.js - 在 Promose/bluebird 中顺序执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698356/