Возвращение массива из функции, которая делает GET-запрос, используя jQuery - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь написать функцию, которая выполняет серию запросов на получение, сохраняет данные из каждого запроса в массив и в конце возвращает массив.

Я делаю что-то ужасно неправильно, потому что мойФункция возвращается до того, как все асинхронные вызовы завершены. Я новичок в javascript и не совсем уверен, как заставить свою функцию удерживать при возврате чего-либо до тех пор, пока не будут обработаны все запросы get.

function load_character_data(peopleURLArray){
  let characterData = new Object() ;
  let i = 0;
  peopleURLArray.forEach(function(url){
    $.get(url, (data) => {
      characterData[i++] = data;
    }).done(() => console.log("done"));
  });
  console.log("function returned")
  return characterData
}

OUTPUT:

функция вернула

сделано

1 Ответ

0 голосов
/ 31 октября 2019

ваш объект возвращается до завершения цикла. следовательно, объект пуст. Попробуйте код ниже и проверьте

function load_character_data(peopleURLArray){
  let characterData = new Object() ;
  let i = 0;
  peopleURLArray.forEach(function(url){
    $.get(url, (data) => {
      characterData[i++] = data;
    }).done(() => {

    console.log("done")

    if(peopleURLArray.length == i){
        return characterData  
       }

    });


  });
  console.log("function returned")

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