クラスのPormiseを実現します.
1757 ワード
コアコード
コードを簡単にするために、次のPromiseの実装でコードチェックをオフにしました.このように、パートナーがPromiseのコアロジックを見やすいです.ES 6文法
多く言わないで、直接コードを入れます.
コードテストとコード解説
もちろんプロモーションは私が言ったように簡単ではないですが、コア原理はこのようにです.
コードを簡単にするために、次の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つを参照してください.もちろんプロモーションは私が言ったように簡単ではないですが、コア原理はこのようにです.