Promise可以手动抛出异常,thrownewError('error')。这种情况处理起来比较简单。在函数执行器中,需要使用try{...}catch(e){reject(e)}来捕获异常代码,改进逻辑代码。调用reject(e)传递下去。then方法中的异步代码部分也需要用try和catch包裹起来。用于接收异常。使用reject(e)向下传递。then方法有一个特点。then方法可以没有参数。这时候promise状态会一直往下传递,直到传递给带有回调函数的then方法。也就是说,then有可选参数。当没有参数时,then()可以认为等价于then(value=>value),此时的形参值等价于传下来的返回值。所以在then方法中,需要判断successCallback和failedCallback//可选参数successCallback=successCallback?成功回调:价值=>价值;失败回调=失败回调?failedCallback:原因=>{抛出原因};测试代码可以正常输出promise.then().then().then(values=>{console.log(values)},reason=>{console.log(reason)})
