javascript - Promise.all() 等待对象属性的返回
问题描述
在异步函数内部,我有一个循环,在这个循环内部,我需要使用 await 来解决来自另一个异步函数的承诺。
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.all() 与对象的属性一起使用?
解决方案
将 a 链接.then
到lengthOfState
调用上,以使整个 Promise 解析为您需要的对象,在Promise.all
:
const citiesInState = await Promise.all(
states.map(
state => lengthOfState(state.Sigla).then(cities => ({ state: state.Sigla, cities }))
)
);
推荐阅读
- react-native - 带有自定义 React Native npm 包的“Null 不是对象”
- python - 如何使矩形停留在python中的移动线上
- xcode - 格式化 LazyHGrid 的问题 - SwiftUI
- http - 启用 CORS,但在标头中添加 cookie 会导致请求被阻止?我已经在凭据服务器端启用了 CORS,不知道如何解决这个问题
- android - Xamarin Forms 启动时出现空白屏幕
- awk - awk 在第一行末尾添加一个管道
- python - 如何用蚊子测试 python paho mqtt?
- c# - 如何在 ASP.Net MVC 中将 data.json 文件绑定到 Kendo UI 图表
- c - 我在分配内存和使用它时找不到逻辑错误
- windows - 如何在 Windows 上禁用/启用逻辑上的 wifi?