Вы делаете await
в части _.each
кода. Это не будет работать так, как вы ожидаете. await
будет ожидать завершения асинхронной операции, прежде чем она продолжится, однако _.each
не является асинхронной операцией, даже если используемый обратный вызов сам по себе является асинхронным. То, что вы хотите сделать, это дождаться фактических обещаний:
useNames = async (allNames) => {
try {
const promisesArray = _.map(allNames, async (value) => {
const res= await axios.get(`https://pokeapi.co/api/v2/pokemon/${value}`);
return res.data;
});
const valuesArray = await Promise.all(promisesArray);
console.log(valuesArray); // Should have resolved values
} catch (err) {
throw new Error('Unable to insert API data');
}
}
Способ, которым это работает, заключается в том, что ваша асинхронная функция будет возвращать результат обещания, который будет таким, в который массив allNames
получает карту в этом случае. Затем можно использовать массив обещаний с Promise.all
, который можно ожидать и получить все результаты обещаний.