angular - promise all 将结果转化为对象
问题描述
我在我的解析器中使用 promise.all ,它可以工作,但是现在,我不想要一个承诺数组而是一个对象,但我找不到如何去做。
这是我的尝试:
resolve(route: ActivatedRouteSnapshot): Promise<any> {
return Promise.all([
this.service1.getAll(),
this.service2.getAll(),
this.service3.getAll()]
.map((result) => {
first: result[0],
second: result[1],
third: result[2]
})
)
}
如您所见,我想将数组转换为具有键值的对象
如何映射结果以获取对象而不是数组?
解决方案
您实际上可以在此处使用es6 中的解构。由于您Promise.all(...)
将解析为其中包含三个项目的数组,因此您可以将其[first, second, third]
作为箭头函数的参数,并且 JavaScript 会将这些项目从数组中的位置取出并将它们设置为具有相应名称的变量(即。first
、、、在这种情况下)second
。third
此外,如果您保持变量名称与对象的属性名称相同,则可以使用下面的简写语法来创建对象。
resolve(route: ActivatedRouteSnapshot): Promise<any> {
return Promise.all([
this.service1.getAll(),
this.service2.getAll(),
this.service3.getAll()
]).then(([first, second, third]) => ({ first, second, third }));
}
作为参考,TypeScript 将代码.then(...)
转换为以下 es5 JavaScript:
.then(function (_a) {
var first = _a[0], second = _a[1], third = _a[2];
return ({ first: first, second: second, third: third });
})
推荐阅读
- python - 安装 Python 的 Mageck 包时无法修复 C 编译环境错误
- css - Bootstrap NavDropdown ClassName active 不存在,如何知道何时选择了下拉元素?
- python - 有没有办法在 Kivy 中创建 2D 难以处理的网格?
- iis - 应用程序托管在托管术语中的 w3wp.exe(进程内)或 application.exe/dotnet.exe(进程外)中的含义
- python - CSV 文件未正确写入 ByteString
- python - 规范化数据集以查找季节性和平均 python pandas
- html - mvc 视图选择下拉 ui 改进
- reactjs - 你可以使用 gatsby-source-mongodb 来发布数据吗?
- python - / 不支持的操作数类型:“方法”和“方法”,Django
- makefile - 从位于多个文件夹中的源文件生成目标文件