如果我想为两个变量分配两个已解决的promise,我可以这样做:
const [a, b] = await Promise.all([first(), second()])
但是指定我有一个带有属性的对象,而不是a
和b
,我如何影响对象属性的结果?
这不起作用:
const x = {}
const [x.a, x.b] = await Promise.all([first(), second()])
有没有办法做到这一点?
答案 0 :(得分:2)
如果您选择单线,很抱歉让您失望。取消引用分配是为了将对象简洁地扩展为变量,而不是对象之间的数据映射。
我也鼓励您使用avoid clever code,因为如果很难阅读,很难理解,这意味着很难验证它在所有适当的边缘情况下是否都按预期工作。
在这种情况下,添加更多行非常简单明了:
awk
作为后续问题,如果您不想在当前范围内生成const [a, b] = await Promise.all([first(), second()])
const x = {
a,
b
}
和a
变量,该怎么办?例如,如果已经定义了b
和a
并且需要避免命名冲突该怎么办?
在这种情况下,添加更多明确的代码很有用:
b
答案 1 :(得分:2)
如果要分配给属性,则不能使用const
(用于声明变量):
const x = {};
[x.a, x.b] = await Promise.all([first(), second()]);
请注意,semicolon is necessary here如果要忽略它们,并让它们在需要的任何地方自动插入,则将need to put one at the begin行如下:
const x = {}
;[x.a, x.b] = await Promise.all([first(), second()])