1.英語聽力1h
2.js-promise 運行機制
由來:回調地獄問題的產生----js對于異步的處理是將異步線程放到消息隊列中,在線程從隊列彈出后執行,引發的問題是當主線程需要異步處理后的數據時,主線程會拿到錯誤數據,為解決這個問題采用了回調函數的方法,執行到回調函數后,會在執行完成后在進行后續的處理,但是在后續的處理中又需要對“數值”進行新的操作,又需要新的回調函數,形成回調地獄。由于這種嵌套的擴展性和維護性很差,為解決這個問題出現了promise。
promise (期約),總體來說解決邏輯是通過鏈式調用,以邏輯鏈的形式將處理后的“數值”一步步返回,好處是擴展性提高了,可維護性大大提高了o.0.
如何實現:
期約有三種狀態1.pending2.resolve3.rejected pending->resolve or pending->rejected 這個過程是不可逆轉的一個期約處理完數據后會返回一種狀態,出發resolve 或者 rejected 函數執行函數體,或者使用then函數,執行then函數會缺省調用方法resolve方法
e.g.這張圖片展示了promise狀態的用處,當處于pending時不會調用resolve和reject函數,原因是因為在new 期約時函數體為空,使其處于pend狀態
事實上在函數期約函數體中我們可以使用resolve和reject兩個函數進行數據處理,期約會返回一個期約,此時我們可以使用then()接收返回的期約或使用catch函數,catch函數會在rejected被調用時觸發。
我認為期約最重要的理解是對期約三種狀態的理解,處于不同狀態會觸發不同的操作,后續處理需要調用不同的函數。
promise使用場景,當前端異步請求多組數據時,返回時可以針對不同的情況進行處理。比如一個接口的兩種狀態,成功或失敗,成功時如何處理,失敗時如何處理,有了promise就可以穩妥解決這個問題
浙公網安備 33010602011771號