javascript - Promise.all() 等待对象属性的返回

标签 javascript asynchronous promise async-await

在异步函数内部我有一个循环,在这个循环内部我需要使用 await 来解决来自另一个异步函数的 promise 。

async function smallestCities(states) {
  const citiesInState = [];
  for (const state of states) {
    const length = await lengthOfState(state.Sigla);
    const stateObject = {
      state: state.Sigla,
      cities: length,
    };
    citiesInState.push(stateObject);
  }

  citiesInState.sort((a, b) => {
    if (a.cities > b.cities) return 1;
    if (a.cities < b.cities) return -1;
    return 0;
  });
  return citiesInState.filter((_, index) => index < 5).reverse();
}

它工作正常,但 eslint 说禁止在循环内等待并使用 Promise.all() 来解决所有 promise 。

问题是我的 promise 是在一个对象属性中:

return of the function

我怎样才能确定将 Promise.all() 与对象的属性一起使用?

最佳答案

.then 链接到 lengthOfState 调用上,以使整个 Promise 解析为您需要的对象,在 Promise.all 内:

const citiesInState = await Promise.all(
  states.map(
    state => lengthOfState(state.Sigla).then(cities => ({ state: state.Sigla, cities }))
  )
);

关于javascript - Promise.all() 等待对象属性的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65175124/

相关文章:

javascript - Promise 不会返回 Angular.js 中的预期文件

javascript - 如何为 JavaScript Set 自定义对象相等性

javascript - 根据变量选择数组

javascript - 如何让YUI更轻更快?

asynchronous - 使用 core.async 阻塞客户端/驱动程序 : are there performance benefits?

javascript - 链接 Promise 并在它们之间传递参数

javascript - 在 javascript 的父闭包中引用 "this"

python - 将 python 子进程作业的输出获取到 Tornado 中

node.js - 如何在调用回调之前设置变量?

javascript - 由于异步生成器中的 promise 的非并行等待而导致速度减慢