簡體   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