Promise 是一个对象,它代表了一个异步操作的最终完成或者失败。
为了加深对 Promise 的理解,使用代码实现 Promise。
// Promise 的三个状态:pedding--初始态,resolve--成功,reject--失败
function Promise(executor) {
let self = this
self.status = 'pending'
self.value = undefined
self.reason = undefined
function resolve(value) {
if (self.status === 'pending') {
self.status = 'resolve'
self.value = value
}
}
function reject(reason) {
if (self.status === 'pending') {
self.status = 'reject'
self.reason = reason
}
}
try {
executor(resolve, reject)
} catch (error) {
reject(error)
}
}
// onFulfilled 成功的回调
// onRejected 失败的回调
Promise.prototype.then = function (onFulfilled, onRejected) {
let self = this
if (self.status === 'resolved') {
onFulfilled(self.value)
}
if (self.status === 'rejected') {
onRejected(self.reason)
}
}
module.exports = Promise
目前暂时实现 Promise 的三种状态,对于 Promise 的链式调用 Promise.then() 的方法,之后再作补充。