jquery ajax: функция вызова, когда все запросы завершены

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

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

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

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

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

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

$(document).ajaxStop(function() { //do your JQuery stuff; }); 
 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 } 

установите глобальную переменную ajax_call_A_complete, установите другой глобальный varialbe ajax_call_B_complete, чтобы установить эти два varialbes в false

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

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