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

我想在执行下一个代码块之前获取嵌套在 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 结束时填充人员,以便我可以在下一个函数中使用结果。


呼唤远方
浏览 231回答 1
1回答

慕哥6287543

最简单的方法是使用 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 将等待所有这些并输出它们的异步返回值数组。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript