如何在JavaScript中展开承诺的价值

如何在JavaScript中展开承诺的价值,javascript,promise,Javascript,Promise,我有以下代码: ... const array = nestings.map(async nesting => await Promise.all([ getFirstDataFromDB(); getSecondDataFromDB(); getThirdDataFromDB(); ]); .then([data1, data2, data3]) => ({data1: data1, data2: da

我有以下代码:

...
const array = nestings.map(async nesting =>
    await Promise.all([
        getFirstDataFromDB();
        getSecondDataFromDB();
        getThirdDataFromDB();
    ]);
        .then([data1, data2, data3]) => ({data1: data1, data2: data2, data3: data3}))
        .catch(error => console.log(error))
...
console.log(array); // Promise
在console.log中,我得到了promise,但是如何得到生成的数组呢?

您需要两个
promise.all
s-每个项目一个,然后在那些
promise.all的数组上另一个。当整个数组的
Promise.all
解析后,您可以
.map
将其结果映射到所需的对象数组:

const arrayOfProms = nestings.map(nesting => Promise.all([
  getFirstDataFromDB(),
  getSecondDataFromDB(),
  getThirdDataFromDB()
]));
const arrOfData = await Promise.all(arrayOfProms);
const array = arrOfData.map(
  ([data1, data2, data3]) => ({data1: data1, data2: data2, data3: data3})
);
示例代码段:

constgetdata=()=>newpromise(res=>setTimeout(res,200,'someval');
常量嵌套=['foo'、'bar'、'baz'];
(异步()=>{
const arrayOfProms=nestings.map(nesting=>Promise.all([
getData(),
getData(),
getData()
]));
const arrOfData=等待承诺。全部(arrayOfProms);
常量数组=arrOfData.map(
([data1,data2,data3])=>({data1:data1,data2:data2,data3:data3})
);
console.log(数组);
})();