所有ajax请求完成后如何调用alert?

我在代码中用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);