Я хочу вызвать отложенные функции 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()
?У меня много проблем с поиском документации по нему со всеми разговорами о фильтрации ...