手写Promise,1.6promise中加入异常捕捉,then方法变可选参数
Promise中可以手动抛出异常,throw new Error('error')
。这种情况处理起来比较简单,完善一下逻辑代码即可
【手写Promise,1.6promise中加入异常捕捉,then方法变可选参数】构建函数执行器中,需要使用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)
})
推荐阅读
- 使用Promise对微信小程序wx.request请求方法进行封装
- 从如何使用到如何实现一个Promise
- Promise详解
- Promise|Promise 异步控制流
- 手写|手写 React-Native 方法调用式的 Modal 弹框、Toast 提示
- spring5源码系列--循环依赖|spring5源码系列--循环依赖 之 手写代码模拟spring循环依赖
- 手写我心day12
- Promise|Promise 高级用法对比
- vue的mvvm原理解析及手写一个
- 手写我心day15