function myPromise(constructor) {
let self = this;
self.status = "pending"; //定义状态改变前的初始状态
self.value = undefined; //定义状态为resolve的时候
self.reason = undefined; //定义状态为reject的时候
function resolve(value) {
if (self.status === "pending") {
self.value = value;
self.status === "resolved";
}
}
function reject(reason) {
if (self.status === "pending") {
self.reason = reason;
self.status === "rejected";
}
}
//捕获构造异常
try {
constructor(resolve, reject)
} catch (e) {
reject(e);
}
}
myPromise.prototype.then = function (onFullfilled, onRejected) {
let self = this;
switch (self.status) {
case "resolved":
onFullfilled(self.value);
break;
case "rejected":
onRejected(self.reason);
break;
default:
}
}
// // 测试代码
// var p=new myPromise(function(resolve,reject){resolve(1)});
// p.then(function(x){console.log(x)})
// //输出1