jquery ajax: вызов функции, когда все запросы завершены - PullRequest
2 голосов
/ 09 июня 2009

У меня есть два одновременных вызова ajax на странице. Я хочу вызвать функцию, когда они оба завершены (и успешно).

Неэффективное решение:

  1. сделать вызов ajax A
  2. при успешном вызове A, вызов B
  3. в случае успеха для вызова B, вызвать функцию

К сожалению, это нарушает параллелизм.

Есть ли другой способ добиться того же эффекта?

Ответы [ 4 ]

1 голос
/ 17 сентября 2012
$(document).ajaxStop(function() {
        //do your JQuery stuff;
});
1 голос
/ 09 июня 2009

Посмотрите на этот ответ, который я дал почти на тот же вопрос на днях, а также взгляните на демо , которое я создал, чтобы пойти с ним (просмотреть исходный код) на этой странице, чтобы увидеть полный код). Это делает намного более эффективным использование присущих JavaScript возможностей и общей природы языка, чем копирование с помощью флаговых переменных, ИМХО; -)

0 голосов
/ 09 июня 2009
var isASuccessful = false;
var isBSuccessful = false;
function callARequest() {
    $.get("path/to/url", { params: list }, function() {
        isASuccessful = true;
        if (isBSuccessful) {
            callMeAfterAandB();
        } else {
            callBRequest();
        }
    });
}
function callBRequest() {
    $.get("path/to/other/url", { params: list }, function() {
        isBSuccessful = true;
        if (isASuccessful) {
            callMeAfterAandB();
        } else {
            callARequest();
        }
    });
}
function callMeAfterAandB() {
    // todo: something
}
0 голосов
/ 09 июня 2009

установить глобальную переменную ajax_call_A_complete установить другую глобальную переменную ajax_call_B_complete установите для этих двух переменных значение false

Не делать вызовы ajax одновременно. При успешном обратном вызове обоих вызовов ajax установите для varialbes значение true. Я имею в виду, что вызов ajax A установит ajax_call_A_complete в true, а вызов ajax B установит varialbe ajax_call_B_complete в true.

Установите периодическое время, которое проверяет значение этих двух переменных каждые 2 секунды. Когда обе переменные имеют значение true, тогда запустите зависимую задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...