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)
})