У меня есть массив объектов, и я перебираю массив с помощью асинхронного цикла forEach и выполняю HTTP-запрос на получение с помощью Axios.Я говорю компилятору дождаться завершения axios, прежде чем продолжить, но по какой-то причине console.log (data) по-прежнему запускается до console.log (ret)
Я думаю, что это может быть из-за того, что цикл forEach просто пропускаетсянастолько, насколько это попадает в ожидание и продолжается, но я не знаю, как решить эту проблему
data.forEach(async (e, i) => {
let req = `https://api.darksky.net/forecast/7e12d816d7818a03901fa6a72e6802f5/${e.lat},${e.log},${Math.floor(e.start_time / 1000)}?units=si`
let ret = await axios(req)
console.log(ret)
data[i]['weather'] = ret.data.currently.summary
data[i]['cloudCover'] = ret.data.currently.cloudCover
})
console.log(data)
Вот вывод, который я вижу (Обратите внимание, что первый массив теоретически должен иметь «погоду» иатрибуты 'cloudCover', поскольку они добавляются)
[ { start_time: 1548952405372,
end_time: 1548953096266,
lat: 59.57644286,
log: 20.16817143 },
{ start_time: 1548958463054,
end_time: 1548959597889,
lat: 59.57644286,
log: 20.16817143 },
{ start_time: 1548964774667,
end_time: 1548966048587,
lat: 59.57644286,
log: 20.16817143 } ]
{ status: 200,
statusText: 'OK',
headers:
{ date: 'Wed, 10 Jul 2019 02:57:13 GMT',
'content-type': 'application/json; charset=utf-8',
'content-length': '10354',
connection: 'close',
'x-authentication-time': '705ms',
'x-forecast-api-calls': '13',
'cache-control': 'max-age=86400',