Promise原理分析二

2021-09-17 21:16:35 字數 2684 閱讀 6064

note:

promise原理分析一

promise.reject(reason)方法返回乙個被拒絕的promise物件。

語法

promise.reject(new error('something wrong')).then(null, err => );

promise.reject(new error('something wrong')).catch(err => );

引數

name

desc

reason

被拒絕的原因。

建立乙個新的promise物件,通過其建構函式的引數reject函式物件將狀態變為rejected

static reject(reason) );

}

promise.resolve(value)方法返回乙個以給定值解析後的promise物件。但如果這個值是個promise物件,返回的promise會採用它的最終狀態;否則以該值為成功狀態返回promise物件。

語法

promise.resolve(1000).then(value => );
引數

name

desc

value

用來解析待返回promise物件的引數。(可以是乙個promise物件)

如果是乙個promise物件,直接返回該值;否則建立乙個新的promise物件,通過其建構函式的引數resolve函式物件將狀態變為fulfilled

static resolve(value) 

return new promise(resovle => );

}

promise.race(values)返回乙個promise物件,這個promise在values中的任意乙個promise被解決或拒絕後,立刻以相同的解決值被解決或以相同的拒絕原因被拒絕。

語法

promise.race([p1, p2]).then(value => , reason => );
引數

name

desc

values

乙個array物件。

使用promise.resolve對迭代物件值進行解析,且將新promise的引數resolvereject函式物件傳遞給then方法,以觸發新promise物件的狀態轉換。

static race(values) 

return new promise((resovle, reject) => );

});}

promise.all(values)方法返回乙個promise物件,該promise會等values引數內的所有值都被resolve後才被resolve,或以values引數內的第乙個被reject的原因而被reject。

語法

promise.all([p1, p2]).then(values => );
引數

name

desc

values

乙個array物件。

通過promise.resolve對迭代物件值進行解析,使用陣列記錄values引數的所有值被解析後的結果,當所有值解析後resolve,並傳遞其所有解析結果。同時傳遞reject函式物件給promise.resolve().then引數,以觸發新promise物件的狀態轉換。

static all(values) 

return new promise((resolve, reject) =>

const len = values.length;

// 建立乙個陣列用來儲存values的promise返回值

const result = new array(len);

let remaining = len;

// 處理values陣列中的值

function doresolve(index, value)

}, reject);

}// 迭代values物件,傳遞其索引位置以確保結果值的順序

for (let i = 0; i < len; i++)

});}

promise.rejectpromise.resolve通過promise的建構函式實現狀態轉變。

promise.racepromise.all使用promise.resolve解析values值,同時通過建構函式的executor引數的函式物件觸發promise的狀態轉變,其中promise.all使用陣列記錄返回值、使用索引值以確保其返回值在結果集中的順序。

promise

mdn

簡單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...