2

Друзья, подскажите пожалуйста новичку, как вернуть значение out'a ? фактически есть имена twich каналов- данная функция хотелось бы чтобы возвращала массив json объектов полученных по данных именам channels

function getMasApi(mas) {
  var out = [];
  mas.forEach(function(el, i) {
    $.getJSON(api + el, function(json) {
      //console.log(json);
      out.push(json);
      //console.log(out);
    });
  });
  console.log(out);
  return out;
};

var channels = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];

let api = "https://wind-bow.glitch.me/twitch-api/channels/";

getMasApi(channels);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Dima
  • 33

1 Answers1

1

const getChannelsArray = () => {
    const channels = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
    let channelArray = [];
  channels.forEach((channel) =&gt; {
      $.getJSON(`https://wind-bow.glitch.me/twitch-api/channels/${channel}`, (data) =&gt; {
        channelArray.push(data);

        // Для наглядности вызову функцию, которая отобразит результаты (одно свойство объекта в качестве примера) на странице
        viewResult(data.name);
      })
  });

  return channelArray;
}

const out = getChannelsArray(); //нужный вам массив

//Функция отображения данных на странице (для наглядности)
function viewResult(data) {
  $('.text').append(`&lt;li&gt;${data}&lt;/li&gt;`); 
}</code></pre>
<ul class="text"></ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  • если до return channelArray попытаться вывести в консоль : console.log(channelArray) он выведет '[]'. в этом то и вопрос - целевой массив не заполняется – Dima Mar 02 '18 at 13:01
  • @Dima это асинхронный код. Пока делается ваш JSON запрос код идет ниже. И строчка с console.log() выполняется быстрее, чем приходит ответ с сервера и заполняется Ваш массив. Весь ваш код нужно выполнять ПОСЛЕ того, как вы получили ответ от сервера (данные). – Роман Татаринов Mar 02 '18 at 13:06
  • да, я ведь и хотел получить ответ как сделать так чтобы последовательно все выполнялось, разобрался вот в промисах немного - реализовал, скоро выложу, интересно ваше мнение кстати – Dima Mar 02 '18 at 13:39