手写Promise,1.6promise中加入异常捕捉,then方法变可选参数

HeiYanjing -
手写Promise,1.6promise中加入异常捕捉,then方法变可选参数

Promise中可以手动抛出异常,throw new Error('error')。这种情况处理起来比较简单,完善一下逻辑代码即可

构建函数执行器中,需要使用try{...}catch(e){reject(e)}捕捉异常代码。调用reject(e)向下传递。
then方法中的异步代码部分,也需要用try,catch包裹。用于接收异常。使用reject(e)向下传递。

then方法有一个特点,then方法可以没有参数,此时promise状态会一直向下传递,知道传递给有回调函数的then方法。
也就是说then有可选参数,当遇到没有参数的时候,此时可以认为then() 等同于 then(value => value) ,此时的形参value就相当于返回值向下传递。所以在then方法中要对successCallback, failedCallback进行判断

// 可选参数
        successCallback = successCallback ? successCallback : value => value;
        failedCallback = failedCallback ? failedCallback : reason => {
            throw reason
        };

测试代码能正常输出

promise.then().then().then(values => {
    console.log(values)
},reason=>{
    console.log(reason)
})
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

javascript前端es6node.js

扩展阅读

加个好友,技术交流

1628738909466805.jpg