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環境下利用函式和原型...