Promise?對象用于表示一個異步操作的最終完成 (或失敗)及其結(jié)果值携悯。
一個 Promise 對象代表一個在這個 promise 被創(chuàng)建出來時不一定已知的值。它讓您能夠把異步操作最終的成功返回值或者失敗原因和相應的處理程序關聯(lián)起來璧函。 這樣使得異步方法可以像同步方法那樣返回值:異步方法并不會立即返回最終的值笋籽,而是會返回一個 promise柿菩,以便在未來某個時候把值交給使用者振诬。
一個 Promise 必然處于以下幾種狀態(tài)之一:
待定(pending): 初始狀態(tài)蹭睡,既沒有被兌現(xiàn),也沒有被拒絕赶么。
已兌現(xiàn)(fulfilled): 意味著操作成功完成肩豁。
已拒絕(rejected): 意味著操作失敗。
待定狀態(tài)的 Promise 對象要么會通過一個值被兌現(xiàn)(fulfilled)辫呻,要么會通過一個原因(錯誤)被拒絕(rejected)清钥。當這些情況之一發(fā)生時,我們用 promise 的 then 方法排列起來的相關處理程序就會被調(diào)用放闺。如果 promise 在一個相應的處理程序被綁定時就已經(jīng)被兌現(xiàn)或被拒絕了祟昭,那么這個處理程序就會被調(diào)用,因此在完成異步操作和綁定處理方法之間不會存在競爭狀態(tài)怖侦。
promise是一個對象篡悟,對象和函數(shù)的區(qū)別就是對象可以保存狀態(tài),函數(shù)不可以(閉包除外)
并未剝奪函數(shù)return的能力匾寝,因此無需層層傳遞callback搬葬,進行回調(diào)獲取數(shù)據(jù)
代碼風格,容易理解旗吁,便于維護
多個異步等待合并便于解決