javascript - 更干净的 Promise.all 语法?

标签 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];

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

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

基本上,我真的很希望有比第一个代码片段更干净的方法。

TIA!

最佳答案

正如评论中提到的,您可以使用 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);
})();

关于javascript - 更干净的 Promise.all 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61840204/

相关文章:

javascript - 简化 Protractor 中的嵌套 promise

javascript - 如果在 Promise 链中的某个点抛出错误,它是否会自动沿着链向下传播?

javascript - 如何从node-dir包中过滤结果数组

javascript - 如何从展平数组中找到父节点路径?

javascript - 如何在一次查询中从 3 个 Bookshelf.js 模型获取数据

javascript - 按照教程没有得到 dojo 循环依赖错误

node.js - 哟 Angular 误差

javascript - NodeJS - 从 Google Drive 下载

javascript - 在不使用 async/await 的情况下按顺序执行 promise 数组

javascript - 带有计算属性名称的 Typescript setState