次の例のように、promise を連鎖できることはわかっています。
// we also have deferA, deferB and deferC as the corresponding defer objects
promiseB = promiseA.then(function(result) {
// do stuff to resolve B
});
promiseC = promiseB.then(function(result) {
// do stuff to resolve C
});
deferA.resolve(data)
this will resolveを呼び出すとpromiseA
、そのthen
メソッドが実行され、promiseB
解決されます。最後に promiseBthen
が実行され、解決されますpromiseC
。フラットでシンプルです(これが正しいことを願っています)。
しかし、Promise がそれ自体に連鎖するとどうなるでしょうか?
上記の例を次のように変更すると:
// we also have deferA and deferB as the corresponding defer objects
promiseA = promiseA.then(function(result) {
// do stuff to...?
});
promiseB = promiseA.then(function(result) {
// do stuff to resolve B
});
deferA.resolve(data);
さてどうなる?実行順序は?
さらに、これはどうですか:
// we also have deferA and deferB as the corresponding defer objects
promiseA = promiseA.then(function(result) {
// do stuff to...?
});
deferA.resolve(data);
promiseB = promiseA.then(function(result) {
// do stuff to resolve B
});
この場合はどうなりますか?