对象数组的复杂解构

问题描述 投票:0回答:1

考虑一下我具有以下发出GET请求的代码;

const [
    {data: a},
    {data: b},
    {data: c},
    {data: d}
] = await Promise.all([
    axios.get('https://api.somesite.org/a.json'),
    axios.get('https://api.somesite.org/b.json'),
    axios.get('https://api.somesite.org/c.json'),
    axios.get('https://api.somesite.org/d.json')
]);

现在,由于它是通过axios进行的,所以我认为响应将始终是完整响应,对于Promise.all,我们将获得一系列类似于以下内容的响应;

[{
data: {
    "a1": "1",
    "a11": "11"
},
headers: {},
status: 200
}, {
data: {
    "b2": "2",
    "b22": "22"
},
headers: {},
status: 200
}, {
data: {
    "c3": "3",
    "c33": "33"
},
headers: {},
status: 200
}, {
data: {
    "d4": "4",
    "d44": "44"
},
headers: {},
status: 200
}
]

现在,这是我认为对代码进行评估的方式(我只需要在以下步骤序列中进行确认);

首先执行数组解构语法,这意味着对于数组中的第一项,将对其进行分配。因此,实际上我们应该获得如下分配的第一个数组元素;

{data: a} = {
data: {
    "a1": "1",
    "a11": "11"
},
headers: {},
status: 200
}

其他3个数组元素发生相同的事情

下一步将是解构语法执行的对象。因此,从右侧对象开始,它将提取“数据”属性值并将其分配给别名“ a”

因此,实际上,变量“ a”应按以下方式分配对象;

{
    "a1": "1",
    "a11": "11"
}

请让我知道我对上述代码执行顺序的理解是否正确。

javascript ecmascript-6 axios es6-promise destructuring
1个回答
0
投票
data is an array with objects
{
data: [{
    "a1": "1",
    "a11": "11"
},
headers: {},
status: 200
}], {
data:[ {
    "b2": "2",
    "b22": "22"
},
headers: {},
status: 200
}], {
data: [{
    "c3": "3",
    "c33": "33"
},
headers: {},
status: 200
}], {
data: [{
    "d4": "4",
    "d44": "44"
},
headers: {},
status: 200
}]
}

解构后,您将获得数据内容

[{
        "a1": "1",
        "a11": "11"
    },
    headers: {},
    status: 200
    }],[ {
        "b2": "2",
        "b22": "22"
    },
    headers: {},
    status: 200
    }],
        [{
        "c3": "3",
        "c33": "33"
    },
    headers: {},
    status: 200
    }], 
     [{
        "d4": "4",
        "d44": "44"
    },
    headers: {},
    status: 200
    }]
© www.soinside.com 2019 - 2024. All rights reserved.