Выполнять множество запросов AJAX параллельно и запускать функцию после их выполнения

Я пытаюсь выполнить следующую последовательность операций, используя JQuery в HTML.

  • Составлен список URL-адресов
  • Каждый из этих URL-адресов запрашивается с использованием $ .getJSON (url) параллельно
  • Дождитесь завершения или отказа всех запросов (может произойти 404)
  • Возьмите данные всех выполненных JSON-запросов и сделайте что-нибудь.

Я создал код Java-Script, размещенный ниже. Он работает безупречно, за исключением случаев, когда один из запросов не выполняется из-за ошибки 404: Затем $. When не запускается, потому что он мгновенно прерывается, если запрос завершается неудачно. Можете ли вы каким-то образом переопределить ajax-запросы, чтобы они не терпели неудачу, а вместо этого возвращали пустой источник?

Я уже читал этот и этот пост, но он не предоставляет решение, в котором код может быть запущен после завершения всех запросов.

function fetchData() {
    queries = [];
    //urls is initialized somewhere else containing all urls
    for(var url in urls) {
        queries.push($.getJSON(url));
    }

    $.when.apply(this, queries).done(function() {
        console.log("Finished all queries, got "+arguments.length+" results");
        //Now arguments is a array containing the results of all requests
    }

    //function returns instantly, no problem!
 }

6
задан Community 23 May 2017 в 12:12
поделиться