// 这里我们创建了一个构造函数 参数就是执行器
function Promise(exector) {
// 这里我们将value 成功时候的值 reason失败时候的值放入属性中
let self = this
// 这里我们加入一个状态标识
this.status = 'pending'
this.value = undefined
this.reason = undefined
this.onfulfilled = true
this.onRejected = false
// 成功执行
function resolve(value) {
// 判断是否处于pending状态
if (self.status === 'pending') {
self.value = value
// 这里我们执行之后需要更改状态
self.status = 'resolved'
}
}
// 失败执行
reject(reason) {
this.status = 'pending'
}
function reject(reason) {
// 判断是否处于pending状态
if (self.status === 'pending') {
self.reason = reason
// 这里我们执行之后需要更改状态
self.status = 'rejected'
}
}
// 这里对异常进行处理
try {
exector(resolve, reject)
} catch(e) {
reject(e)
}
}