コードで複数のバッチ非同期操作を実行しています。バッチ内の操作は非同期で実行する必要がありますが、バッチは次々と同期的に実行する必要があります。
これが私が作成した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()ましたが、最初のチェーンの後に実行が停止しました。明らかな何かが欠けていますか?
アドバイスをありがとう。
乾杯