【发布时间】:2014-04-03 09:18:01
【问题描述】:
for (var i in arr) {
console.log(i);
$.get(searchURL, function (result) {
console.log(result);
}); // end of inner async request
} // end of outer arr
在这种情况下,我看到了
1
2
3
result
result
result
但我的意图和期望是
1
result
2
result
3
result
我认为发生这种情况是因为每个 ajax 调用所花费的时间都比整个 for 循环的执行时间长。这是正确的吗?如果是这样,这样做的传统方法是什么?
更新:
我发现使用 jQuery 的 $.each 函数而不是 for loop 给了我预期的输出。 $.each 函数是否旨在与循环内的异步调用一起使用?
【问题讨论】:
-
.each()在运行 ajax 调用时不会改变。它将使您能够在每个完成函数中唯一地访问i变量,但您的代码示例和问题并没有说明这一点。
标签: javascript jquery ajax