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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM