【发布时间】:2016-05-04 16:22:35
【问题描述】:
给定
var promises = [Promise.resolve("a"), Promise.reject("b")];
Promise.all(promises.map(function(p, index) {
return p.then(function(data) {
console.log("inside .map()", data, "index", index)
return data
}, function(err) {
console.log(err);
return err
})
}))
.then(function(complete) {
console.log("all promises after .map()", complete)
}, function(err) {
console.log("err", err)
})
为什么onRejected 没有在.then(onFulfilled, onRejected) 之后调用Promise.all()?
jsfiddle https://jsfiddle.net/9gprLc7q/
【问题讨论】:
-
因为您没有处理映射中的错误,所以您返回的仍然是已解决的承诺。如果你这样做
Promise.reject(err),它将正常工作。 -
即使不重复也密切相关(但不是一个明显的):Chained promises not passing on rejection。你
return err而不是 rethrowing。
标签: javascript promise