我想在循环中调用 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
s 被调用。
我意识到我可以通过调用一个函数来使用递归来实现这一点,该函数将我在这里拥有的内容包装在then
.
但我想知道是否有一些我缺少使用而不是递归的技术。我总是担心递归在将来的某个时候会耗尽堆栈。参数num_of_iterations
可能会相当大。
我可以用吗pipe()
为了这?我在理解它的文档及其所有关于过滤的讨论时遇到了很多麻烦......
我认为在这种情况下你可以使用管道链。看看这个工作 jsfiddle 并让我知道这是否或多或少是您正在寻找的。http://jsfiddle.net/tchaffee/Df3ay/3/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)