我想在执行下一个代码块之前获取嵌套在 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 结束时填充人员,以便我可以在下一个函数中使用结果。
1 回答
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
慕哥6287543
TA贡献1831条经验 获得超10个赞
最简单的方法是使用 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,Promise.all 将等待所有这些并输出它们的异步返回值数组。
添加回答
举报
0/150
提交
取消