1. 程式人生 > 其它 >linux centos7.6下 安裝redis

linux centos7.6下 安裝redis

手寫promise

Promise 本身是同步

真正的非同步是你自己在promise內部寫的程式碼

開始實現promise

大概邏輯

1. 例項化建構函式,建構函式內部呼叫傳入的function,把resolve和reject傳給function

2. 緊接著呼叫then方法,把then方法上的一些函式儲存起來:(成功函式,失敗函式),最終then返回了一個promise,所以還要儲存一個promise例項

  2.1 如果是鏈式呼叫then,則全部呼叫,把需要的函式全部儲存起來

3. 接著是你寫的非同步函式resolve或者reject被呼叫。promise內部修改狀態pending -->fulfilled 表示成功,如果呼叫reject則狀態被修改為 rejected 表示失敗,狀態是不可逆的,只能改一次,保證resolve和reject函式只被呼叫一次

4. 之後在resolve和reject函式內部使用非同步處理(這裡是為了防止resolve/reject 同步呼叫時 ,處理then方法勞動成果的程式碼執行在then方法之前,導致拿不到then方法的勞動成果)

5. 處理then方法的成功/失敗函式,將resolve/reject的結果傳入成功函式,並接收返回值,作為下一個then方法的結果傳給promise.resolve,reject函式不接收返回值,直接呼叫當前then方法的失敗函式,把錯誤丟擲去

開始實現

先簡單實現promise的這幾個方法:

resolve

reject

then

catch

constructor呼叫傳入的函式,把resolve/reject傳進去

先從then方法入手

catch方法比較簡單

resolve/reject