javascript - 将 Promise.all 结果分配给对象属性

标签 javascript

如果我想将两个已解决的 promise 分配给两个变量,我可以这样做:

const [a, b] = await Promise.all([first(), second()])

但是分配我有一个具有属性的对象,而不是ab,我如何影响对象属性的结果?

这不起作用:

const x = {}
const [x.a, x.b] = await Promise.all([first(), second()])

有办法做到这一点吗?

最佳答案

如果您想看一句俏皮话,我很抱歉让您失望了。取消引用赋值意味着将简洁的对象扩展为变量,而不是对象之间的数据映射。

我还鼓励您avoid clever code因为如果很难阅读,就很难理解,这意味着很难验证它是否在所有适当的边缘情况下按预期工作。

在这种情况下,添加更多行非常简单明了:

const [a, b] = await Promise.all([first(), second()])

const x = {
  a,
  b
}

作为后续问题,如果您不想在当前范围内生成 ab 变量怎么办?例如,如果 ab 已经定义并且您需要避免命名冲突怎么办?

在这种情况下,添加一些明确的代码是有用的:

const [xA, xB] = await Promise.all([first(), second()])

const x = {
  a: xA,
  b: xB
}

关于javascript - 将 Promise.all 结果分配给对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52278135/

相关文章:

javascript - JavaScript 中的贪心算法

Javascript 数组 unshift 新日期减去 1 天

javascript - 将 HTML5 页面另存为 PDF

国际电话号码的 Javascript 正则表达式

javascript - 有谁知道带分页的动态表的 js 库吗?

javascript - 在 HTML 中向下滚动时将导航栏移动到顶部

javascript - 两张照片放在一起。在悬停时显示一个。可以用 css 还是只用 javascript?

javascript - 选择文件后显示图像

javascript - 呈现为 pdf 时,如何在 visualforce 中重复每个元素后应用分页符

javascript - 收到错误模块 "react"未找到