【发布时间】:2018-05-24 15:30:05
【问题描述】:
我有一个函数,其中有一个 jQuery.each 迭代表的所有行。
问题是在 each() 代码中有一个 ajax 调用(因此对表的每一行都有一个 ajax 调用),我希望它等到 ajax 调用完成后再开始下一次迭代,使其更具顺序性,避免一次启动 300 个 ajax 调用的可能性。
这是我的代码示例:
$("button").click(function () {
$("#table tbody tr").each(function () {
$.ajax({
url: "http://api.example.com/?param=value",
success: function (data) {
updateUIBasedOnResult(data);
}
});
});
});
我知道我可以使 ajax 调用同步,但在这种情况下,所有 UI 都将被阻塞,直到循环结束。
我该怎么做?
【问题讨论】:
-
不要在循环中发出 AJAX 请求——尤其是不要发出 300 个请求。将所有数据聚合到一个请求中,然后发出该请求一次。
-
我希望有一种方法可以做到这一点。但如果不可能,我会听从你的建议。谢谢