javascript - 在 Promise.all 数组之后无法访问已解决的承诺的值
问题描述
之后无法访问已解决的承诺的值Promise.all
。正如您在下面的示例中看到的,res.prop
打印未定义。我想我可以创建一个包装函数,将解析的值推送到另一个responses
数组,但这似乎不是一种干净的方法。
(async () => {
const responses = []
let counter = 10
while (counter--) {
responses.push(new Promise(resolve => resolve({prop: 10})))
}
await Promise.all(responses)
for (const res of responses) {
console.log(res) // -> prints Promise {prop: 10}
console.log(res.prop) // -> prints undefined
}
})()
解决方案
你永远不会使用await Promise.all(responses)
. 您的承诺的返回值由以下方式返回Promises.all
:
(async () => {
const responses = []
let counter = 10
while (counter--) {
responses.push(new Promise(resolve => resolve({prop: 10})))
}
const results = await Promise.all(responses)
for (const res of results) {
console.log(res) // -> prints Promise {prop: 10}
console.log(res.prop) // -> prints undefined
}
})()
推荐阅读
- r - 为什么我在 R 中看到带有 ggplot 的 geom_line 的条形图?
- python - 比较两个 CSV 文件并搜索相似的表情符号
- javascript - 为什么我不能导入这个国家代码选择器?有一个更好的方法吗?
- excel-formula - 在excel中使用左右函数返回许多争论
- flutter - 在 2 个选项之间切换的小部件:RenderFlex 子项具有非零 flex 但传入的高度约束是无界的
- c - 在 C 中对字节数组元素进行位移位有什么作用
- mongodb - MongoDB count() 与 countDocuments()
- tensorflow - 如何计算 TFL Detect 中检测到的对象数量?
- java - 实时数据 Firebase 数据库的问题
- sql - 如何检查分区表是否存在