阅读 17

手写Promise

特点

Promise 有以下两个特点:
1、对象的状态不受外界影响,Promise对象代表一个异步操作,共有三个状态
(1)pending:初始状态
(2)fulfilled:操作成功
(3)rejected:操作失败
2、一旦状态发生改变,就不会再发生变化。Promise 对象的状态改变,只有两种可能:从 Pending 变为 Resolved 和从 Pending 变为 Rejected。

代码实现

class MyPromise {
    constructor(fn){
        this.callbacks = [];
        fn(this.resolve.bind(this), this.reject.bind(this));
    }
    
    resolve(result){
        this.complete('resolve', result);
    }
    
    reject(result){
        this.complete('reject', result);
    }
    
    complete(type, result){
        while(this.callbacks[0]){
            this.callbacks.shift()[type](result);
        }
    }
    
    then(successHandler, failedHandler){
        this.callbacks.push({
            resolve: successHandler || function(){},
            reject: failedHandler  || function(){}
        });
        return this;
    }
}
复制代码
文章分类
前端
文章标签