クラスのPormiseを実現します.


コアコード
コードを簡単にするために、次のPromiseの実装でコードチェックをオフにしました.このように、パートナーがPromiseのコアロジックを見やすいです.ES 6文法
多く言わないで、直接コードを入れます.
class PromiseTest {
    executor = (resolve, reject) => {
    }

    constructor(executor) {
        this.executor = executor;
    }

    then(sucess, error) {
        let flag = true;
        let resolveV;
        let rejectV;
        const resolve = (value) => {
            flag = true;
            resolveV =  sucess(value);
        };
        const reject = (value) => {
            flag = false;
            rejectV = error(value);
        };
        this.executor(resolve, reject);
        // onfulfilled onrejected           promise   
        return new PromiseTest((resolveSub, rejectSub) => {
            if (flag) {
                resolveSub(resolveV);
            } else {
                rejectSub(rejectV);
            }
        });
    }
}
とても簡単なのがありますか?これは一番典型的な実用方法です.
コードテストとコード解説
const promise = new PromiseTest(function(resolve, reject) {
 if (true){
    resolve("sucess");
  } else {
    reject("erorr");
  }
});

promise.then(function (value) {
    console.log(value)    // => sucess
    return "sub " + value;
}, function (error) {
    console.log(error)    // => erorr
    return "sub " + error;
}).then(function (value) {
    console.log(value)  // => sub sucess
}, function (error) {
    console.log(error)  // => sub erorr 
});  
//                  then      ,      promise        
簡単にまとめて、Promise構築時にあなたが伝えたexector関数を元に戻したpromiseオブジェクトにキャッシュします.promiseのthenメソッドを呼び出すと、あなたが書いたexectour関数を実行します.そして、thenメソッドで定義されている二つのフィードバック関数をPromiseの構築時に置き換えます.の2つを参照してください.
もちろんプロモーションは私が言ったように簡単ではないですが、コア原理はこのようにです.