等待 unitl ajax 及其回调函数完成

Wait unitl ajax and its callback function finish

本文关键字:函数 回调 unitl ajax 等待      更新时间:2023-09-26

我正在构建一个允许用户同时执行多个操作的Web应用程序。例如,用户可以打开列表、删除列表或添加新列表。

每个操作都会进行 ajax 调用并执行回调函数,以便在成功时更新 UI。我想确保这些操作以序列化的方式执行,以便 UI 不会不同步。例如,如果用户打开一个列表,但在几分之一秒后删除了该列表,这取决于哪个 ajax 首先调用 finsihes,它可能会显示现在应该删除的列表。

为此,对于每个操作,我想等到 ajax 调用及其回调函数完成。我怎样才能做到这一点?

如果你使用的是jQuery,.always()回调是在.done()/.fail()之后调用的。

$.ajax("example.php")
    .done(function() {
        alert("success");
    })
    .fail(function() {
        alert("error");
    })
    .always(function() {
        alert("complete"); //Called after done/fail callbacks
    });
使用 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...
});