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);
});