// promise
// 三种状态 padding resolve reject
// promise 函数主体
// 存储对应的状态,存储对应的执行结果
// 时刻牢记,promise的参数是一个判断成功与否的函数
// then的参数是一个用于接受返回值的函数
function myPromise(constructor){
let self = this
self.status = 'padding'
self.value = undefined
self.reason = undefined
function resolve(value){
if(self.status === 'padding'){
self.status = 'resolve'
self.value = value
}
}
function reject(reason){
if(self.status === 'padding'){
self.status = 'reject'
self.reason = reason
}
}
try{
constructor(resolve, reject)
}catch(e){
reject(e)
}
}
// 添加then方法
// 功能,访问到上一步存储的值
myPromise.prototype.then = function(Fullfilled,Rejected) {
let self = this
switch(self.status){
case 'resolve':
Fullfilled(self.value)
break
case 'reject':
Rejected(self.reason)
break
default:
}
}
let a = '操作成功'
let b = '操作失败'
let p = new myPromise((resolve, rejest) => {
if(b === '操作成功'){
resolve('成功')
}else{
rejest('失败')
}
})
p.then(res => {
console.log(res)
},rej => {
console.log(rej)
})
console