私はループでjQueryの延期関数を呼び出すしたいがgetJSON
はすべての反復ですべての要求が実際になり、非同期であるため、各反復が延期when()
もちろん今jQueryの後で各反復が繰り返されるだけでループします。
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;
}
を使用して完了するために、以前の反復を待つべきwhen
のいずれかが呼び出される前に送信されます。
私はthen
でここにあるものをラップする関数を呼び出すことでこれを達成できます。
しかし、私は再帰の代わりに使用するために欠けている技術があるのだろうかと思っています。私はいつもスタックのある時点で再帰を心配しています。パラメータnum_of_iterations
は、潜在的にかなり大きい可能性があります。
これにはpipe()
を使用できますか?私は、フィルタリングに関するすべての話をして、ドキュメントをgrokkingしています。
これは単なるコード例です。実数は、時間の経過とともに増加する外部APIから来ており、私は好奇心を満足させるだけでなく、将来を許したいと考えています。私は私の例を更新します... – hippietrail
私はすぐにそれをテストし、30000の数の回りにあまりにも多くの再帰エラーを持っています(あなたが簡単に10万を超えることを意味するかもしれない各ループのいくつかの要求をしているならリクエスト - おそらく最初に心配するものです)。つまり、async.js https://github.com/caolan/async – Daff