promise.each(function(obj){
obj.doIntensiveWork()
.then(function(){
console.log("I AM FIRST")
})
})
.then(function(){
console.log("I AM SECOND")
})
让我们说doIntensiveWork()
需要相当长的时间来实现。 "我是第二个" 会在"我是第一个" 之前被记录,因为each
被解析为{{在每个obj上调用(但不满足)1}}。这是对的吗?
如果是,我该如何将其反转以确保" I AM SECOND" 仅记录 并在最后&之后#34;我是第一个" 登录?我正在使用Bluebird API
答案 0 :(得分:3)
你是对的,因为每个人都不等待强化工作完成。您可以使用map
函数“加入”所有密集型工作(不要忘记return
)
promise.map(function(obj){
return obj.doIntensiveWork()
.then(function(){
console.log("I AM FIRST")
})
})
.then(function(){
console.log("I AM SECOND")
})