手動實現乙個promise 及all 等api功能

2022-09-24 04:06:11 字數 1087 閱讀 8516

const pending = 'pending'

const resolve = 'resolve'

const rejected = 'rejected'

class mypromise catch (error)

}//static mypromise狀態

// value 成功**的值

// fail 失敗**的值

static = pending

value = null

fail = null

successcallback =

failcallback =

// 成功的**

resolve = (value) =>

}// 失敗的**

rejected = (fail) =>

}then (successcallback, failcallback) catch (error)

}, 0)

else if (this.static === rejected) catch (error)

}, 0)

} else catch (error)

}, 0)

})this.failcallback.push(() => catch (error)

}, 0)})}

})return promise2

}finally (callback) , reason => )})}

catch (failcallback)

static all (array)

}for (let i = 0; i < array.length; i++) else }})

}static resolve (value)

}// 用於處理then return的是promise型別的資料 及判斷是否進行了自調的錯誤操作

// instanceof用於判斷是否是其的例項

function handlefn (promise2, x, resolve, rejected)

if (x instanceof mypromise) else

}

手動封裝乙個Promise

本章來自己開發乙個promise實現,提公升非同步程式設計的能力。首先宣告定義類並宣告promise狀態與值,有以下幾個細節需要注意。executor為執行者 當執行者出現異常時觸發拒絕狀態 使用靜態屬性儲存狀態值 狀態只能改變一次,所以在resolve與reject新增條件判斷 因為 resolv...

JS 來實現乙個 Promise

promise 原始碼 this promise code refered to this blog var promise function fn function trytojson obj catch e return value function resolve newvalue else ...

手寫乙個Promise

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