JS分解为其他变量

时间:2019-11-13 00:24:53

标签: javascript destructuring

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

所以我有这些对象:

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

我想将testObject1的“第一个”属性放在testObject2的“ property1”中。

我这样做的通常方法是:

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

TestObject1从异步函数返回。 因此,我正在寻找的语法如下所示:testObject2.property1 = await asyncFunction().first,但我知道这行不通。

但是我想用销毁的方式做到这一点,我找不到解决办法。

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试使用异步/等待功能,它将起作用。

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

答案 1 :(得分:0)

无需破坏...

testObject2.property1 = testObject1.first;

答案 2 :(得分:0)

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

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

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