如果我想将两个已解决的 promise 分配给两个变量,我可以这样做:
const [a, b] = await Promise.all([first(), second()])
但是分配我有一个具有属性的对象,而不是a
和b
,我如何影响对象属性的结果?
这不起作用:
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
}
作为后续问题,如果您不想在当前范围内生成 a
和 b
变量怎么办?例如,如果 a
和 b
已经定义并且您需要避免命名冲突怎么办?
在这种情况下,添加一些明确的代码是有用的:
const [xA, xB] = await Promise.all([first(), second()])
const x = {
a: xA,
b: xB
}
关于javascript - 将 Promise.all 结果分配给对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52278135/