Promise对象如何在.then()中进行resolve和reject
问题描述
Promise().then()既然返回的是一个Promise对象, 那么then()中应该有类似于Promise((resolve, reject)=>{})中的resolve和reject的参数,以便向后传递继续(when resolved)或者中断(when rejected)的信息. 但是, then()中只接受两个函数:handleFulfilled
,handleRejected
, 并且这两个函数中的参数只有一个, 就是上一个Promise中resolve出来的或reject出来的.
解决方法:
在.then()中使用return和throw
任何不是 throw 的终止都会创建一个"已决议(resolved)"状态,而以 throw 终止则会创建一个"已拒绝"状态。
下面这三种情况都是可以的:
handleFulfilled(value) { /*...*/; return nextValue; }
handleRejection(reason) { /*...*/; throw nextReason; }
handleRejection(reason) { /*...*/; return nextValue; }