jQuery: подождите, пока несколько запросов GET будут успешно обработаны

Мне нужно отправить несколько запросов $ .get, обработать их ответы и записать результаты обработки в одном массиве. Код выглядит так:

$.get("http://mysite1", function(response){
  results[x1] = y1;
}
$.get("http://mysite2", function(response){
  results[x2] = y2;
}

// rest of the code, e.g., print results

Есть ли способ убедиться, что все функции успеха завершены, прежде чем я приступлю к остальной части моего кода?

Ответы на вопрос(2)

$.when позволяет объединить несколькоDeferredс (что к чему$.ajax возвращается).

$..get(1), $.get(2) ).done(function(results1, results2) {
    // results1 and results2 will be an array of arguments that would have been
    // passed to the normal $.get callback
}).fail(function() {
    // will be called if one (or both) requests fail.  If a request does fail,
    // the `done` callback will *not* be called even if one request succeeds.
});
Решение Вопроса

отложенный объект jQuery. $ .get возвращает объект jqXHR, который реализует интерфейс Deferred - эти объекты можно объединить так:

var d1 = $.get(...);
var d2 = $.get(...);

$.when(d1, d2).done(function() {
    // ...do stuff...
});

Узнайте больше наhttp://api.jquery.com/category/deferred-object/ а такжеhttp://api.jquery.com/jQuery.when/

 Barry Chapman14 мар. 2019 г., 07:19
Использование $ .get в $ .when (). Done () больше не работает
 Niko28 мар. 2012 г., 00:59
Да, это должно быть возможно.
 amir28 мар. 2012 г., 00:58
Это решение все еще работает, если у меня есть функции успеха в вызовах $ .get? Я пробовал это раньше, не повезло!

Ваш ответ на вопрос