首页 > 解决方案 > 在 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
    }
})()

标签: javascript

解决方案


你永远不会使用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
    }
})()


推荐阅读