Promise 簡單原始碼

2021-10-23 06:10:35 字數 1104 閱讀 2791

乙個簡單的promise方法執行過程

const promise = new promise(function(resolved, rejusted)else

},1000);

})promise.then(function(res)).catch(function(errer))

建立乙個建構函式mypromise

傳入乙個fn方法為引數:操作事件的成功或者失敗的

建立乙個屬性記錄成功的事件:successlist

建立乙個屬性記錄失敗的事件:faillist

建立乙個屬性記錄狀態的繫結state:pending(初始狀態)、fullfilled(成功)、rejected(失敗)

fn方法有兩個引數:resolvefn(成功)和 rejustefn(失敗)

2. resolvefn:遍歷成功的任務

2. rejustefn:遍歷失敗的任務

在該建構函式的原型上建立then方法和catch方法

3. then方法:引數resolvefn(成功)和 rejustefn(失敗)

3. catch方法:rejustefn失敗方法

回到頂部目錄

class mypromise 

// then方法

then(resolvefn, rejustefn)

if(typeof rejustefn === 'function')

return this;

}// catch方法

catch(rejustefn)

return this;

}// 迴圈執行成功微任務

resolvefn(res)

// 迴圈執行失敗微任務

rejustefn(err)

}// 測試**

const p = new mypromise(function(resolved, rejusted)else

},1000);

})p.then(function(res)).catch(function(errer))

回到頂部目錄

Promise 原始碼 靜態方法

最後來看一下 promise 的幾個常用的靜態方法的實現 注 本次閱讀的是 then promise 的 4.0.0 版本,原始碼請戳 這裡。在 4.0.0 版本之中,promise 物件被封裝在了core.js檔案中,常用的靜態方法則寫在了index.js檔案中,開啟 index.js 檔案。pr...

Promise原始碼深入理解

promise的第一版實現 function mypromise constructor function reject reason 捕獲構造異常 try catch e mypromise.prototype.then function onfullfilled,onrejected var p...

簡易版promise原始碼實現

首先我們先看一下promise是如何使用的 通過promise構建出來的物件有三種狀態,pending 進行中 fulfilled 已成功 rejected 已失敗 狀態只能由 pending 變為 fulfilled 或由 pending 變為 rejected 且狀態改變之後不會在發生變化,會一...