簡單記錄下Promise的使用

前言:談到promise,我們都知道它可能有三種狀態:等待(pending)、已完成(fulfilled)、已拒絕(rejecte),而且一個promise只可能從“等待”轉到“完成”態或者“拒絕”態;且狀態一旦改變便是不可逆的,談到promise,很多人想到的就是解決回撥地獄的問題,當我們在需要多個非同步請求都執行完再執行下一步操作時,可以考慮使用promise。這裡只簡單記錄下promise的使用。

1.簡單的使用:

當前案例:

有兩個非同步請求a和b,a請求返回的結果有b請求需要必須傳的請求引數:

簡單記錄下Promise的使用

a請求成功,進入resolve,b請求執行

簡單記錄下Promise的使用

a請求返回失敗,進入reject,直接進入catch,列印error資訊(失敗)

簡單記錄下Promise的使用

2.promise的all函式使用:

簡單記錄下Promise的使用

簡單記錄下Promise的使用

隨便一個請求隨機數小於5,終將直接進入promise。all的catch

簡單記錄下Promise的使用

只有當三個請求隨機生成的數字都大於5時才能進入promise。all的then裡邊,

返回的結果是一個數組,是a,b,c請求resolve的結果(成功)。

簡單記錄下Promise的使用

到這裡發現,使用promise。all時,只有當a,b,c請求都成功時,即進入resolve時,才能執行promise。all的then裡邊,否則終將都會進入promise的catch。

如果需要不管a,b,c是否都成功還是有失敗的,都輸出他們的返回結果,只需對著三個請求都catch下即可:

以a請求為例:(b,c請求同樣)

簡單記錄下Promise的使用

最終三請求不管成功與失敗,都將會返回結果,即都進入promise。all的then回撥裡邊,我們可以清楚地知道三請求的返回結果分別是啥。

簡單記錄下Promise的使用

任意一個失敗

簡單記錄下Promise的使用

全部都失敗

簡單記錄下Promise的使用

全部都成功