Promise內部實現原理

2022-06-11 08:09:12 字數 1409 閱讀 6029

promise內部實現原理:

function

$promise(fn)

this

.triggerresolve(val)

} //失敗函式處理

const reject = (val) =>

trycatch

(err)

}$promise.prototype =

onrejected = typeof onrejected === 'function' ? onrejected : function (reason)

//promise的then方法返回的是新的promise物件,狀態不會更改

return

new $promise((resolve, reject) =>

else

}//失敗**事件處理

const rejecthandle = val =>

else

}//當狀態已經確認則立即執行

if (this.status === this

.resolved)

if (this.status === this

.rejected)

//當當前狀態沒有確認,則將**函式放入佇列,等待確認後再一次執行

this

.onresolvedcallback.push(resolvehandle)

this

.onrejectedcallback.push(rejecthandle)

})},

//狀態確認後,成功**佇列的函式依次執行

triggerresolve(val) )}})

},//

狀態確認後,失敗**佇列的函式依次執行

triggerreject(val) )}})

},//

最後捕捉呼叫鏈錯誤

catch

(onrejected) ,

//finally實現,不管成功還是失敗,都執行

finally

(callback) , (err) =>);

}}//單獨呼叫promise.resolve方法實現

$promise.resolve = val =>)}//

單獨呼叫promise.reject方法實現

$promise.reject = val =>)}//

race函式的實現,返回結果最先完成

$promise.race = values =>, error =>)

}})}//

all函式實現,如有錯誤立即返回,沒有錯誤,等待全部完成再返回

$promise.all = values =>

}for (let i = 0; i < len; i++) , error =>)}})

}

簡單promise實現原理

promise可以有三種狀態,分別是pedding fulfilled rejected pending promise物件例項建立時候的初始狀態 fulfilled 可以理解為成功的狀態 rejected可以理解為失敗的狀態 構造乙個promise例項需要給promise建構函式傳入乙個函式。傳入...

Promise原理與實現

var promise function if this instanceof promise return new promise resolver var self this 儲存this self.callbacks 儲存onresolve和onreject函式集合 self.status p...

簡單實現Promise原理

const pending pending const resolved resolved const rejected rejected 對於不太經常更改的變數 定於為常量 function mypromise fn function reject value trycatch e mypromi...