gpt4 book ai didi

angular - promise all 将结果转换为对象

转载 作者:行者123 更新时间:2023-12-03 18:30:50 26 4
gpt4 key购买 nike

我在我的解析器中使用 promise.all,它可以工作,但是现在,我不想要一个 promise 数组而是一个对象,但我找不到如何去做。

这是我的尝试:

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]
})
)
}

如您所见,我想将数组转换为具有键值的对象

如何映射结果以获取对象而不是数组?

最佳答案

你实际上可以使用 destructring in es6这里。由于您的 Promise.all(...)将解析为一个包含三个项目的数组,你可以有 [first, second, third]作为箭头函数的参数,JavaScript 会将项目从数组中的位置中取出,并将它们设置为具有相应名称的变量(即 firstsecondthird 在这种情况下)。

此外,如果您保持变量名称与对象的属性名称相同,您可以使用下面的简写语法来创建对象。

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 });
})

关于angular - promise all 将结果转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53175432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com