コードで複数のバッチ非同期操作を実行しています。バッチ内の操作は非同期で実行する必要がありますが、バッチは次々と同期的に実行する必要があります。
これが私が作成したjsfiddleです。すべての出力がそこにあるので、コンソールを見てください。便宜上、コードを次に示します。
asyncChain(10, 'FIRST CHAIN')
.then(function () {
asyncChain(10, 'SECOND CHAIN');
})
.then(function(){
asyncChain(10, 'THIRD CHAIN');
});
function asyncChain(n, msg) {
var promiseChain = Q.fcall(function () {
10;
});
console.log('starting:' + msg);
for (var i = 0; i < n; i++) {
promiseChain = promiseChain.then(asyncOperation(i, msg));
}
console.log('returning' + msg);
return promiseChain;
}
function asyncOperation(i, msg) {
var d = Q.defer();
setTimeout(function () {
console.log('resolving for #' + i + msg);
d.resolve(i);
}, 300 + Math.random()*1000);
return d.promise;
}
基本的に、これらは 3 つのバッチ化された promise 操作であり、次々と終了する予定です。このサンプルの出力は次のようになります。
starting FIRST CHAIN
returning FIRST CHAIN
resolving 1..10 FIRST CHAIN
starting SECOND CHAIN
returning SECOND CHAIN
resolving 1..10 SECOND CHAIN
and so on
all()
代わりにメソッドを使用してみthen()
ましたが、最初のチェーンの後に実行が停止しました。明らかな何かが欠けていますか?
アドバイスをありがとう。
乾杯