我正在使用一个链来控制流量,并且无法获得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