手寫乙個Promise(4)

2021-10-02 20:23:12 字數 1654 閱讀 2709

最後一篇,說說除了then之外的

實現了前面的then後,這兩個方法就很簡答了。

static

resolve

(value)

else

resolve

(value);}

);}

這裡處理resolve中的promise的方式和前面一樣。

reject也類似:

static

reject

(value));

}

先貼**:

static

all(promises)

, reason =>);

});}

);}

這裡為了判斷所有的promise都成功,使用了陣列長度和傳入的promises長度的比較。

同時只要有乙個失敗,reject就會執行。

因為狀態改變不能覆蓋的特性,所以race實現起來相當簡單:

static

race

(promises)

, reason =>);

});}

);}

貼一下全家福:

class

eswang

catch

(error)}

resolve

(value));

});}

}reject

(reason));

});}

}then

(onfufilled, onreject)if(

typeof onreject !==

"function"

)let promise =

neweswang

((resolve, reject)

=>

, onreject: val =>})

;}if(

this

.status === eswang.

fufilled))

;}if(

this

.status === eswang.

rejected))

;}})

;return promise;

}parse

(promise, result, resolve, reject)

tryelse

resolve

(result);}

catch

(error)}

static

resolve

(value)

else

resolve

(value);}

);}static

reject

(value));

}static

all(promises)

, reason =>);

});}

);}static

race

(promises)

, reason =>);

});}

);}}

手寫乙個Promise

js物件導向 在js中一切皆物件,但js並不是一種真正的物件導向 oop 的語言,因為它缺少類 class 的概念。雖然es6引入了class和extends,使我們能夠輕易地實現類和繼承。但js並不存在真實的類,js的類是通過函式以及原型鏈機制模擬的,本小節的就來 如何在es5環境下利用函式和原型...

手寫乙個promise

promise a 規範 注 以下 沒有通過promises aplus tests的全部測試,但基本功能還是全的 測試結果 864 passing,8 failing 另外可以參考這個指南中的 promise實現 promise resolve 100 規範 class mypromise con...

手寫乙個Promise(1)

promise作為目前最受歡迎的js非同步程式設計解決方案,重要性不言而喻,今天就來實現乙個自己的promise。首先宣告類,新增幾個靜態屬性代表promise的狀態 class eswang 接著寫建構函式,主要是兩個類屬性,乙個代表狀態,使用剛剛的靜態屬性,乙個代表promise的值,初始為nu...