問題描述
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; }