兩分鍾讀懂 Promise 的三種狀態


       ES6中提出的一個規范 Promise,常用於處理各種異步操作帶來的回調地獄

       但是大量地進行 Promise 的鏈式調用, 以及復雜的業務邏輯, 又會帶來的新的問題,經過一股腦地 Promise...then.. 最后的狀態及值分別是什么?

       在這里將它分為兩種情況:

1. then 里面對 Promise 的相關結果進行了對應的處理,例:

const success = new Promise((resolve, reject) => {
      resolve(1)
  })
  .then(res => {
      // 處理 resolve
  })
  
  const fail = new Promise((resolve, reject) => {
      reject(1)
 })
 .then(null, res => {
     // 處理 reject
 })

  對於這種情況, 若處理函數執行過程不報錯:

    則最后的狀態為 fulfilled,值為處理函數的返回值( 若返回值為 Promise 對象,則最后的狀態及值與這個 Promise 對象保持一致 );

  若執行過程報錯:

    則狀態為 rejected,值為報錯原因;

 

2. 未對 Promise 的相關結果進行對應處理,例:

const success = new Promise((resolve, reject) => {
    resolve(1)
})
.then(null, res => {
    // 處理 reject
})


const fail = new Promise((resolve, reject) => {
    reject(1)
})
.then(res => {
    // 處理 resolve
})

  對於這種情況,直接忽略 .then 內的代碼,最后的狀態和值與 new Promise(xxx) 的狀態和值一致

  由此可發現,當對 Promise 的結果進行了相應處理的時候,只需關注這個處理過程是否完成,完成則說明這次 Promise 成功,整個狀態為 fulfilled,並將值接力下去,未對 Promise 結果處理時,then 內不執行,最后狀態和結果不變。

  

 


免責聲明!

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



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