Вы используете асинхронное ожидание в неправильных местах.Ключевое слово async
должно использоваться для функции, содержащей асинхронную функцию.
await
ключевое слово должно использоваться для выражения, которое возвращает Promise
, и хотя setState
равно async
, оно нене вернуть обещание и, следовательно, await
не будет работать с ним
Ваше решение будет выглядеть как
componentDidMount() {
let mails = [];
axios.get('/api/employee/fulano')
.then(res => this.setState({
employees: res.data
}, async () => {
const mails = await Promise.all(this.state.employees.map(async (i) => { // map function contains async code
try {
const res = await axios.get(`/api/status/${i.mail}`)
return res.data;
} catch(err) {
console.log(err)
}
})
this.setState({ mails })
}))
.catch(err => console.log(err))
}