从 Promise.all 解构为对象
Destructuring from Promise.all into object
我发现自己现在写了很多代码,比如
const arr = await Promise.all([getName(), getLocation(), getDetails()])
const obj = {
name: arr[0],
location: arr[1],
details: arr[2]
}
// send obj to somewhere else
这很丑。我希望有类似
的东西
const obj = {}
[obj.name, obj.location, obj.details] = await Promise.all([getName(), getLocation(), getDetails()])
但这失败了。有没有一种优雅的方法可以像这样进行解构?
const [name, location, details] = await Promise.all([getName(), getLocation(), getDetails()]);
const obj = { name, location, details };
await Promise.all([getName(), getLocation(), getDetails()])
.then(([name, location, details]) => ({ name, location, details }));
它确实有效。您只需在此处添加一个分号即可。
(async () => {
const obj = {}; // <------------------------------
[obj.first, obj.second, obj.third] = await Promise.all([1,2,3])
console.log(obj)
})()
我发现自己现在写了很多代码,比如
const arr = await Promise.all([getName(), getLocation(), getDetails()])
const obj = {
name: arr[0],
location: arr[1],
details: arr[2]
}
// send obj to somewhere else
这很丑。我希望有类似
的东西const obj = {}
[obj.name, obj.location, obj.details] = await Promise.all([getName(), getLocation(), getDetails()])
但这失败了。有没有一种优雅的方法可以像这样进行解构?
const [name, location, details] = await Promise.all([getName(), getLocation(), getDetails()]);
const obj = { name, location, details };
await Promise.all([getName(), getLocation(), getDetails()])
.then(([name, location, details]) => ({ name, location, details }));
它确实有效。您只需在此处添加一个分号即可。
(async () => {
const obj = {}; // <------------------------------
[obj.first, obj.second, obj.third] = await Promise.all([1,2,3])
console.log(obj)
})()