Как вызвать оповещение после выполнения всех запросов ajax? - PullRequest
5 голосов
/ 16 июля 2011

Я делаю в коде несколько запросов с 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 запросов.

Спасибо.

Ответы [ 4 ]

13 голосов
/ 16 июля 2011

Вы можете использовать отложенные объекты [документы] , представленные в jQuery 1.5:

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

Ссылка: jQuery.when

В учебном центре jQuery есть хорошее введение в отложенные объекты / обещания .

2 голосов
/ 16 июля 2011
 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');
};
0 голосов
/ 16 июля 2011
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);
0 голосов
/ 16 июля 2011
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');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...