javascript - Reduce 内部的 Async/Await
问题描述
我正在尝试将async
/await
与该reduce
方法一起使用。但不知何故,只有循环的第一次迭代有效。await
第一次reduce
迭代完成后,papers 对象将跳过。是否可以在从承诺中收集内容的同时使用创建对象reduce
,同时等待整个过程?
减少功能:
const papers = await page.concepts.reduce(async (acc, cur) => {
acc[cur.paperID] = await getPageData(`papers/${ cur.paperID }`, 'md')
return acc
}, {})
注意:getPageData
返回一个承诺。
解决方案
您可以创建一组承诺,然后使用Promise.all
来解决它们。如果任何请求失败Promise.all
,将停止处理剩余的请求。
const papersPromises = page.concepts.map(cur =>
getPageData(`papers/${ cur.paperID }`, 'md')
)
const result = await Promise.all(papersPromises)
// result will be an array with the results
推荐阅读
- python - 从列表python中找到近似模式
- java - 无法运行 Launch4j(非法访问)
- javascript - 节点js socket.io在空闲时间后断开连接
- docker - 从 docker stack 中的 ubuntu 容器获取“未知主机”
- c# - 假设 TimeZone 时将字符串解析为 DateTimeOffset
- python - 尝试导入 Tensorflow 时 DLL 加载失败
- node.js - 将简单的回调转换为异步等待
- python - Python 中的 Datacompy 库在报告中将阿拉伯字母写成乱码
- xcode - watchOS上的SwiftUI按钮高度
- selenium - Appium:Andriod Emulator Drop Down 在连接 VPN 后不工作