【发布时间】:2016-11-03 04:57:32
【问题描述】:
我正在运行一段 javascript 来运行 Ajax 调用(以 XML 形式返回),处理该 XML,然后对 XML 中找到的每个“记录”执行另一个 Ajax 调用(删除记录),然后一旦所有的东西都有完成,刷新页面。
这很好用,但我无法让 Javascript 等到所有迭代 Ajax 调用都完成后再刷新页面。
在刷新页面之前等待所有迭代调用完成的最佳方法是什么?
任何“AVMI_”变量都在别处定义。
var x = $.get(AVMI_childDB, { //******* INITIAL AJAX *******
act: "API_DoQuery",
query: AVMI_query,
clist: "3",
includeRids: "1"
});
x.then(function(xml1) {
console.dirxml(xml1);
$(xml1).find('record').each(function(){
var AVMI_record = $(this);
var AVMI_childRID = AVMI_record.attr("rid");
console.log(AVMI_childRID);
var y = $.get(AVMI_childDB , { //******* ITERATIVE AJAX CALL *******
act: 'API_DeleteRecord',
rid: AVMI_childRID
});
y.then(function(xml2) {
console.dirxml(xml2);
});
});
location.reload();
});
【问题讨论】:
-
您可以使用第一个请求来存储找到多少记录的变量计数,然后在每次完成时增加计数。如果当前计数 +1 等于您之前的计数,请刷新。
-
我想我也可以这样做,谢谢指出!
标签: javascript jquery ajax promise