我正在构建一个允许用户同时执行多项操作的Web应用程序。例如,用户可以打开列表,删除列表或添加新列表。
每个动作进行ajax调用并执行回调函数以在成功时更新UI。我想确保以序列化方式执行这些操作,以便UI不会失去同步。例如,如果用户打开一个列表,但稍后删除列表一小段时间,这取决于首先调用fjihes的ajax,它可能会显示应该被删除的列表。
为了实现这一点,对于每个动作,我想等到ajax调用和其回调函数完成。我怎样才能做到这一点?
答案 0 :(得分:0)
使用Jquery,您可以将async: false
添加到Ajax调用中,或使用Jquery deferred确保仅在Ajax调用完成后发出操作(假设您使用Jquery)。
如果您有多个Ajax请求,示例可能如下所示:
$.ajax({url: url}).pipe(function() {
// some ajax stuff
return $.ajax({});
}).pipe(function() {
// some more ajax stuff (3rd request)
return $.ajax({});
}).done(function() {
// done with all ajax requests...
});
答案 1 :(得分:0)
如果您正在使用jQuery,.always()
/ .done()
后会调用.fail()
回调。
$.ajax("example.php")
.done(function() {
alert("success");
})
.fail(function() {
alert("error");
})
.always(function() {
alert("complete"); //Called after done/fail callbacks
});