繁体   English   中英

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

[英]Wait unitl ajax and its callback function finish

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

每个操作都会进行ajax调用,并执行回调函数以在成功后更新UI。 我想确保以串行方式执行这些操作,以使UI不会不同步。 例如,如果用户打开一个列表,但是在一秒钟之内删除列表,这取决于首先执行哪个ajax调用,则它可能会显示应该立即删除的列表。

要做到这一点,每一个动作,我想等到一个Ajax调用及其回调函数完成。 我该如何实现?

使用Jquery时,您可以在Ajax调用中添加async: false或使用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...
});

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

$.ajax("example.php")
    .done(function() {
        alert("success");
    })
    .fail(function() {
        alert("error");
    })
    .always(function() {
        alert("complete"); //Called after done/fail callbacks
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM