Как сделать на 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 по мск