如何在JavaScript中解开Promise的价值

Qui*_*zen 4 javascript promise

我有以下代码:

...
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
Run Code Online (Sandbox Code Playgroud)

在console.log中,我可以保证,但是如何获取生成的数组?

Cer*_*nce 6

您将需要两个 Promise.all s-一个用于每个单独的项目,然后另一个用于这些Promise.alls 的数组。当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})
);
Run Code Online (Sandbox Code Playgroud)

示例片段:

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})
);
Run Code Online (Sandbox Code Playgroud)