我想在执行下一个代码块之前获取嵌套在forEach循环中的服务调用的结果
我尝试过使用普通的for循环,该方法可以工作...但是ESLINT抱怨着..那么理想的解决方案是什么?
const people = []
const fetchPeople = async () => {
peopleIds.forEach(personId => {
people.push(restApi.getPersonById(personId))
})
}
await fetchPeople()
logger.error(`people should be populated : ${JSON.stringify(people)}`)
我希望人们在forEach的末尾被填充,因此我可以在下一个函数中使用结果。
实际上,没有人居住
答案 0 :(得分:4)
最简单的方法是使用Promise.all()和array.map()
const people = await Promise.all(peopleIds.map(restApi.getPersonById));
logger.error(`people should be populated : ${JSON.stringify(people)}`)
Array.map()将为每个id创建一个承诺,Promise.all将等待所有id并输出其异步返回值的数组。