最後一篇,說說除了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...