Как сделать на JS чтобы он заходил в сеть

const send_arr = (how_many, min, max) => {
    let api = 'https://api.instantwebtools.net/v1/airlines/'
    let arr = []
    for (let index = 0; index < how_many; index++) {
        axios.get(api + Math.floor(Math.random() * (max - min + 1)) + min)
            .then(function (response) {
                arr.push(response.data)
            })
            .catch(function (error) {
                console.error(error);
            })
    }
    return arr
}

const getarr1 = (arr) => {
    console.log(send_arr(100, 10, 1200));
}

как сделать чтобы return дождался функци

 for (let index = 0; index < how_many; index++)

и сделал ретерн


Ответы (1 шт):

Автор решения: HaZcker

Вам нужен Promise.All

const send_arr = (how_many, min, max) => {
  const urls = []

  // наполняем массив url-ами
  for (let i = 0; i < how_many; i++) {
    urls.push(getUrl(min, max))
  }

  // создаём массив промисов
  const requests = urls.map((url) => axios.get(url))
  
  // выполняем промисы
  return Promise.all(requests)
    .then(responses => responses.map(resp => resp.data))
    .catch(e => console.error(e))
}

function getUrl(min, max) {
  const base = 'https://api.instantwebtools.net/v1/airlines/'
  const number = Math.floor(min + Math.random() * (max + 1 - min))
  return base + number
}

const getarr1 = (arr) => {
  send_arr(5, 10, 1200).then(results => console.log('results', results));
}

PS. кажется у вас функция получения числа от min до max работала неправильно, получение url я вынес в отдельную функцию

UPD. исправлена опечатка в коде в 22:41 по мск

→ Ссылка