我正在使用一個鏈來控制流量,並且無法獲得step2()
中的promise.map,直到它的所有生成的promise都被解析。如何在promise鏈中返回promise.map(bluebird)?
下面是我試圖實現的流程的視覺效果。
step1() step2() step2() step2() step2() step3()
在step2()
我使用藍鳥的promise.map。
這裏的鏈條:
let step1 = function() {
return new Promise(function(resolve, reject) {
// do stuff
resolve()
})
}
let step2 = function() {
return new Promise(function(resolve, reject) {
things = []
return Promise.map(things, function(thing) {
// load file async with callback
})
resolve()
})
}
let step3 = function() {
return new Promise(function(resolve, reject) {
// do stuff
resolve()
})
}
我測試過的鏈帶更多的步驟,每一個timeout
和它的工作與預期:
step1()
.then(function() { return step2() })
.then(function() { return step3() })
.catch(function() { // handle errors })
這裏是我的每一步功能step2()
中的promise.map除外。我究竟做錯了什麼? :)
在'step2'中調用'resolve()'是無法訪問的。 'return'有效地停止了你的代碼的執行,所以它後面的任何代碼都不會被執行。 – Dario