更干净的 Promise.all 语法?

Git*_*nna 2 javascript node.js promise

我对 Node.JS 相当陌生,我真的很讨厌 Promise.all 返回数组的语法。

例如。

const requiredData = await Promise.all([
        getFirst(city),
        getSecond(hubIds),
        getThird(city, customerCategoryKey),
        getFourth(request)
    ])

const firstData = requiredData[0];
const secondData = requiredData[1];
const thirdData = requiredData[2];
const fourthData = requiredData[3];
Run Code Online (Sandbox Code Playgroud)

我需要在单独的代码行中单独获取它们。有没有类似的方法

const {
firstData,
secondData,
thirdData,
fourthData
} = await Promise.all([
        getFirst(city),
        getSecond(hubIds),
        getThird(city, customerCategoryKey),
        getFourth(request)
    ])
Run Code Online (Sandbox Code Playgroud)

基本上,我真的很喜欢是否有比第一个代码片段更简洁的方法。

蒂亚!

mam*_*man 6

如评论中所述,您可以使用Array destructor而不是使用对象析构函数:

(async () => {
  const promise1 = Promise.resolve(3);
  const promise2 = 42;
  const promise3 = new Promise((resolve, reject) => {
    setTimeout(resolve, 100, "foo");
  });

  // get all elements as variables
  const [p1, p2, p3] = await Promise.all([promise1, promise2, promise3]);

  console.log(p1, p2, p3);
})();
Run Code Online (Sandbox Code Playgroud)