JSFiddle - React, Tailwind, and code Playground
by ruirui
JavaScript
class Promise{
constructor(executor){
this.status = 'pending';
this.value = ''; // 成功传参
this.reason = ''; // 失败原因
let resolve = (value) => { // 表示成功的函数
if(this.status == 'pending') {
this.value = value;
this.status = 'fulfilled'
}
}
let reject = (reason)=> { // 表示失败的函数
if(this.status == 'pending') {
this.reason = reason;
this.status = 'rejected'
}
}
executor(resolve, reject); // 立即执行执行器
}
then(onfulfilled, onrejected) {
if(this.status === 'fulfilled') { // 状态是成功时,调用成功回调
onfulfilled(this.value);
} else if(this.status === 'rejected') { // 状态是失败时,调用失败回调
onrejected(this.reason);
}
}
}
let promise = new Promise(function(resolve,reject){
resolve(123);
});
promise.then(function(value){
console.log('success',value);
},function(reason){
console.log('fail',reason);
});