我有这个:
function test1() {
return new Promise(resolve => {
return resolve({
a: 1
})
})
}
function test2() {
return new Promise(resolve => {
return resolve({
a: 2
})
})
}
async function a() {
let { a } = await test1()
console.log(a) // 1
let { a } = await test2()
console.log(a)
}
a()
但是显然出现了这个错误:
error: unknown: Identifier 'a' has already been declared (20:9)
18 | let { a } = await test()
19 | console.log(a) // 1
> 20 | let { a } = await test1()
| ^
21 | console.log(a)
22 | }
23 |
正如你所看到的,我想避免这种情况:
async function a() {
let results = await test1()
let { a } = results
console.log(a) // 1
results = await test2()
a = results.a
console.log(a) // 2
}
因为我实际上无法使用相同的 let
重新声明相同的参数名称。
我也不能这样做:
{ a } = await test2();
因为缺少声明。
如何使其高效且易于阅读,同时保持高效的 ES6 功能?
最佳答案
您只需要一个不同的变量名称。您可以第一次将其放入 a1
变量,第二次将其放入 a2
变量:
function test1() {
return new Promise(resolve => {
return resolve({
a: 1
})
})
}
function test2() {
return new Promise(resolve => {
return resolve({
a: 2
})
})
}
async function a() {
let { a: a1 } = await test1()
console.log(a1) // 1
let { a: a2 } = await test2()
console.log(a2)
}
a()
也可以覆盖旧的a
,但在不必要时重新分配变量可能应该避免:
function test1() {
return new Promise(resolve => {
return resolve({
a: 1
})
})
}
function test2() {
return new Promise(resolve => {
return resolve({
a: 2
})
})
}
async function a() {
let { a } = await test1()
console.log(a); // 1
({ a } = await test2());
console.log(a)
}
a()
关于javascript - 是否可以为同一个 key 提取两次对象 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61040678/