ループ内で jQuery 遅延関数を呼び出したいのですが、各反復は、遅延関数を使用して前の反復が完了するまで待機する必要があります。when()
function (num_of_iterations) {
var arr = [];
for (var i = 1; i < num_of_iterations; ++i) {
arr.push($.getJSON( ... 1 ... ));
arr.push($.getJSON( ... 2 ... ));
...
$.when.apply($, arr).then(function() {
// somehow do the next iter. only now that all the asynch getJSON's are done
});
}
return;
}
もちろん、getJSON
は非同期であるため、すべての反復のすべてのリクエストは、いずれかwhen
が呼び出される前に実際に送信されます。
ここにあるものをthen
.
しかし、再帰の代わりに使用するのに欠けているテクニックがあるかどうか疑問に思っています。将来のある時点で再帰がスタックを使い果たすことを常に心配しています。このパラメーターnum_of_iterations
は潜在的に非常に大きくなる可能性があります。
これに使えますpipe()
か?フィルタリングに関するすべての話で、ドキュメントを理解するのに苦労しています...