相关疑难解决方法(0)

ES6 Promise.all()错误句柄 - 是否需要.settle()?

假设我有一个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)

javascript promise ecmascript-6 es6-promise

9
推荐指数
1
解决办法
4389
查看次数

扩展Javascript承诺并在构造函数中解析或拒绝它

我想使用ES6语法扩展本机Javascript Promise类,并能够在子类构造函数中调用一些异步函数。基于异步功能的结果,承诺必须被拒绝或解决。

但是,then调用函数时会发生两个奇怪的事情:

  1. 子类构造函数执行两次
  2. 引发“未捕获的TypeError:承诺解决或拒绝函数不可调用”错误

    class MyPromise extends Promise {
        constructor(name) {
            super((resolve, reject) => {
                setTimeout(() => {
                    resolve(1)
                }, 1000)
            })

            this.name = name
        }
    }

    new MyPromise('p1')
        .then(result => {
            console.log('resolved, result: ', result)
        })
        .catch(err => {
            console.error('err: ', err)
        })
Run Code Online (Sandbox Code Playgroud)

javascript inheritance es6-promise es6-class

7
推荐指数
3
解决办法
2020
查看次数