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的引數resolve
和reject
函式物件傳遞給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.reject
和promise.resolve
通過promise的建構函式實現狀態轉變。
promise.race
和promise.all
使用promise.resolve
解析values值,同時通過建構函式的executor引數的函式物件觸發promise的狀態轉變,其中promise.all
使用陣列記錄返回值、使用索引值以確保其返回值在結果集中的順序。
promisemdn
簡單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...