簡體   English   中英

在所有 ajax 請求完成后如何調用警報?

[英]How to call alert after all ajax requests are done?

我在代碼中使用 JQuery 提出了一些請求並get . 看起來像:

$.get('address1', function() { ... });
$.get('address2', function() { ... });
$.get('address3', function() { ... });

// This code should be runned when all 3 requests are finished
alert('Finished');

那么,有什么方法可以檢測是否還有處理請求,並且只有在所有 3 個請求都完成后才運行標記的代碼。

謝謝。

您可以使用 jQuery 1.5 中引入的延遲對象[docs]

$.when(
    $.get('address1', function() { ... }),
    $.get('address2', function() { ... }),
    $.get('address3', function() { ... })
).then(function() {
    alert('Finished');
});

參考: jQuery.when

jQuery 學習中心很好地介紹了延遲對象/承諾

 var isFinished = [];

$.get('address1', function() { isFinshed.push["address1"]; allDone(); });
$.get('address2', function() { isFinshed.push["address2"]; allDone(); });
$.get('address3', function() { isFinshed.push["address3"]; allDone();});

var allDone = function(){
    if(isFinished.length < 3)return

    alert('Finished');
};
var fin1 = false;
var fin2 = false;
var fin3 = false;

$.ajax({
  url: "address1",
  success: function(){
    fin1 = true;
    fnUpdate();
  }
});

$.ajax({
  url: "address2",
  success: function(){
    fin2 = true;
    fnUpdate();
  }
});

$.ajax({
  url: "address3",
  success: function(){
    fin3 = true;
    fnUpdate();
  }
});

function fnUpdate(){
  if(fin1 && fin2 && fin3){
    alert('fin');
  }
}
var count = 0;
$.get('address1', function() { count++; ... });
$.get('address2', function() { count++; ... });
$.get('address3', function() { count++; ... });

var int = setInterval(function() {
    if (count === 3) {
        clearInterval(int);
        alert('done');
    }
}, 10);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM