为了账号安全,请及时绑定邮箱和手机立即绑定

在 forEach 循环中调用服务并在继续之前等待它完成

在 forEach 循环中调用服务并在继续之前等待它完成

呼唤远方 2021-09-17 10:22:05
我想在执行下一个代码块之前获取嵌套在 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 回答

?
慕哥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 将等待所有这些并输出它们的异步返回值数组。


查看完整回答
反对 回复 2021-09-17
  • 1 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信