プロミスチェーンは、新しいPromiseオブジェクトを次々に作ってコールバック関数を登録していくものです。ところで、新しいPromiseではなく、同じPromiseに対して2回thenで関数を登録したらどうなるでしょう。
function makePromise(num) {
return new Promise((resolve, reject) => {
if(num % 2 == 0)
resolve('OK');
else
reject('NG');
});
}
let promise = makePromise(2);
promise.then((x) => {
console.log(`then1 callback: ${x}`);
return x + x;
});
setTimeout(() => {
console.log(promise);
promise.then((x) => {
console.log(`then2 callback: ${x}`);
});
}, 1000);
結果
then1 callback: OK
Promise {<resolved>: "OK"}
then2 callback: OK
履行済み、かつコールバック関数を1度実行したことのあるPromiseオブジェクトでも、あとからコールバック関数を追加すれば実行される、ということがわかります。結果の値("OK"
)はそのままです。
以上、特に実用性はない実験でした。