Javascript 如何知道来自特定函数的所有AJAX调用何时完成?
我有一个函数,它有许多不同的函数调用,内部有许多ajax调用。如何知道由Javascript 如何知道来自特定函数的所有AJAX调用何时完成?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个函数,它有许多不同的函数调用,内部有许多ajax调用。如何知道由$(“#save”).click(…)触发的所有ajax调用是否已完成 $("#save").click(function() { saveUpdateSeatDetails(); markAbsent(); setTimeout(function() { location.reload(); }, 369); }); 我试着使用async:false,但我发现它不推荐使
$(“#save”).click(…)
触发的所有ajax调用是否已完成
$("#save").click(function() {
saveUpdateSeatDetails();
markAbsent();
setTimeout(function() {
location.reload();
}, 369);
});
我试着使用async:false
,但我发现它不推荐使用
我还提到。但是,这适用于整个页面。我希望这只适用于特定的函数
(无ES6)您应该使用jQuery(略有不同,但基本上与承诺兼容),它由$.ajax
调用返回。我假设您在这里使用的是$.ajax
,因为您在回答中使用了jQuery
您需要更新函数以返回$。ajax
调用:
function saveUpdateSeatDetails() {
return $.ajax("http://example.com...");
}
function markAbsent() {
return $.ajax("http://example.com...");
}
然后你可以做:
$("#save").click(function() {
$.when(saveUpdateSeatDetails(), markAbsent()).done(function() {
alert("test")
});
});
$。当执行函数之前等待Ajax请求完成时
由于这是jQuery 1.5+的一部分,因此任何与jQuery兼容的浏览器都可以运行此代码(不需要ES6)。也许您不必使用Promissions,但如果您希望代码易于阅读和维护,您确实应该使用Promissions。这就像承诺一样简单。所有的
,如果你想为那些可能不支持承诺的客户服务,这就是polyfills的用途。非常感谢你的重复。我会试试这个让你知道你好,我试过你的解决方案。但是有一个问题,最后一个函数有'location.reload();`不明白executed@Richard-您还可以使用它将值从Ajax函数返回到变量吗?@therailslearner非常抱歉,我的原始代码中有一个错误,它已被修复。@vibs2006您传递到.done
的函数将把$.Ajax调用中解析的延迟值作为参数传递给它。所以第一个结果将是第一个参数,第二个将是第二个参数,等等。