the*_*ner 2 javascript ajax jquery
我有一个函数,它有许多不同的函数调用,里面有很多ajax调用.我如何知道所有被触发的ajax调用是否$("#save").click(...)已完成?
$("#save").click(function() {
saveUpdateSeatDetails();
markAbsent();
setTimeout(function() {
location.reload();
}, 369);
});
Run Code Online (Sandbox Code Playgroud)
我尝试过使用async: false,但我得到了交战,表示它已被弃用.
我还提到了如何知道所有ajax调用何时完成?.但是,这适用于整个页面.我希望这仅适用于特定功能.
(没有ES6)
你应该jQuery的Deferred(稍微不同但主要与Promises兼容),这是由$.ajax调用返回的.$.ajax因为你在答案中使用了jQuery,所以我假设你在这里使用.
你需要更新你的函数返回的$.ajax电话:
function saveUpdateSeatDetails() {
return $.ajax("http://example.com...");
}
function markAbsent() {
return $.ajax("http://example.com...");
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
$("#save").click(function() {
$.when(saveUpdateSeatDetails(), markAbsent()).done(function() {
alert("test")
});
});
Run Code Online (Sandbox Code Playgroud)
$.when 在执行函数之前等待Ajax请求完成.
由于这是jQuery 1.5+的一部分,任何与jQuery兼容的浏览器都可以运行此代码(不需要ES6).