jQuery .when (): есть ли функция обратного вызова, которая срабатывает, когда все запросы завершаются независимо от их состояния? - PullRequest
0 голосов
/ 24 июня 2019

Я использую .when() метод jQuery и передаю несколько Ajax-запросов в качестве аргументов. Для каждого запроса ajax, если он завершается неудачно и входит в функцию обратного вызова ошибок Ajax, я помещаю сообщение об ошибке, выданное сервером, в глобальный массив.

То, что я хотел бы иметь, это обратный вызов, который будет запущен, когда все запросы будут выполнены, независимо от успеха или неудачи всех запросов. В этом обратном вызове я распечатаю все сообщения об ошибках, которые были отправлены в мой глобальный массив.

Исходя из моего понимания и моего тестирования, обратный вызов .then() запускается только тогда, когда все запросы были разрешены, и обратный вызов .fail() запускается, как только мы получаем отказ, что не позволяет мне получить все ошибки сообщения, но только первое.

sources = [ 'posts', 'comments', 'albums', 'photos' ];
requests = [];
ajaxErrors = [];
$.each(sources, function(idx, val) {
    requests.push(
        $.ajax({
            type    : 'GET',
            url     : 'https://myapi/' + val,
            success : function(data) {},
            error   : function(data) {
                ajaxErrors.push(data.message);
            }
        })
    );
});

$.when
    .apply($, requests)
    .then(function() {
        // Only fired when all requests are successful
    })
    .fail(function() {
        console.log(ajaxErrors);
        // If all request failed, ajaxErrors only has 1 element : ['Error retrieving posts, connexion timeout']
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...