关于javascript:手写Promise16promise中加入异常捕捉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)
})

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理