我误解了Promise.all吗?我在数组中有X个promise,我正在尝试聚合数组的成功/失败率.
以下是我认为我所知道的:
Promise.all采取了一系列承诺.
如果所有承诺都成功,则.then
运行回调.
如果其中一个promise失败,则.catch
调用回调,传入的参数是单个引发的错误的值.
如果有些成功并且有些失败,则没有回复触发,这是所有承诺的结果.即它不能给你一个类似(伪代码)的数组[success, fail, success, success]
- 就像人们所期望的那样,可以在许多JS库中找到它们(ajax,ember等).
它就.then
像是一个更像是.success
一个函数,而不是一个在所有承诺完成后总是运行的函数,无论一些成功还是一些失败.为什么没有.when
.finally
.runThisShizNoMatterWhat
?或者我错过了什么(非常可能)?
假设我有一个Promise.all()
处理两个承诺.如果一个承诺产生错误,但另一个承诺解决,我希望能够在Promise.all()
结算后根据情况处理错误.
ES6承诺缺少结算方法,我假设有充分的理由.但我不禁想到这个.settle()
方法会让我这个问题变得容易多了.
我是以错误的方式解决这个问题,还是通过一种解决方法扩展ES6 Promise,这是正确的做法?
我正在考虑如何使用的一个例子.settle()
:
Promise.all([Action1,Action2])
.settle(function(arrayOfSettledValues)
//if 1 failed but not 2, handle
//if 2 failed but not 1, handle
//etc....
)
Run Code Online (Sandbox Code Playgroud)