3 回答
TA贡献1818条经验 获得超7个赞
combineLatest(observables, resultSelector)
通常可以替换为
combineLatest(observables).pipe(
map(resultSelector)
)
但这是否以相同的方式工作取决于您resultSelector接受的参数。combineLatest(observables)发出一个数组,当你使用已弃用的 resultSelector 时,RxJs 会自动传播这个数组。
return isArray(args) ? fn(...args) : fn(args); // fn is your resultSelector
AsObject.assign根据您提供的是数组还是多个值返回不同的值,您必须手动展开数组。
combineLatest(observables).pipe(
map(items => Object.assign({}, ...items))
)
TA贡献1784条经验 获得超9个赞
结果选择器只是一个可用于更改输出形状的函数。
因此,您可以简单地省略结果选择器参数并使用地图来转换形状:
this.params = combineLatest(
this._route.pathFromRoot.map(route => route.params)
).pipe(
map(Object.assign)
);
结果选择器的一个常见用途(对我来说)是将数组作为具有命名属性的对象返回,所以像这样:
// 旧方法
myObs$ = combineLatest(
[src1$, src2$, src3$],
([src1, src2, src3]) => ({src1, src2, src3})
);
// 新方法
myObs$ = combineLatest(src1$, src2$, src3$)
.pipe(
map(([src1, src2, src3]) => ({src1, src2, src3}))
);
TA贡献2019条经验 获得超9个赞
pipe
结果并改用map
运算符,例如:
combineLatest(this._route.pathFromRoot.map(route => route.params)).pipe( map(Object.assign) );
此外,不确定代码的意图,因为它似乎正在调用Object.assign
一个新的数组引用,不确定为什么这是必要的,但这并不完全相关。
添加回答
举报