乙個簡單的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 且狀態改變之後不會在發生變化,會一...