我不确定这是否可能。我不知道该怎么做。
所以我有这些对象:
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
,但我知道这行不通。
但是我想用销毁的方式做到这一点,我找不到解决办法。
谢谢!
答案 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或未定义的值,因此此方法并不总是一个好主意。