JS解构为其他变量

JS destructuring into other variable

我什至不确定这是否可能。我不知道该怎么做。

所以我有这些对象:

const testObject1 = {first: 25, second: 2}; 
let testObject2 = {property1: 0, property2: 29};

我想把 testObject1 的 "first" 属性 放在 testObject2 的 "property1" 中。

我通常的做法是:

const {first} = testObject1; 
testObject2.property1 = first;

TestObject1 是从异步函数返回的。 所以我正在寻找的语法看起来像这样:testObject2.property1 = await asyncFunction().first 但我知道这不起作用。

但我想在解构的一行中完成此操作,但我找不到执行此操作的方法。

谢谢!

尝试使用 async/await 功能,它会起作用。

const testObject1 = {first: 25, second: 2};

let testObject2 = {property1: 0, property2: 29};

const getTestObject = function() {
    return new Promise((resolve) => {
        setTimeout(function() {
            resolve(testObject1);
        }, 3000);
    })
}

const test = async () => {
    const testObject1 = await getTestObject();
    if (testObject1.first) {
        const {first} = testObject1; 
        testObject2.property1 = first;
    }

}

test();

console.log(testObject2); // {property1: 25, property2: 29}

官方指南:async function

无需解构...

testObject2.property1 = testObject1.first;

只需将 await 调用括在圆括号 () 内,这将确保首先执行括号内的任何内容,在您的示例中,从 asyncFunction() 解析的对象将在括号后可用.例如:

testObject2.property1 = (await asyncFunction()).first;

请注意,您无法检查空值或未定义值,因此这种方法并不总是一个好主意。