Javascript Rxjs CombineTest和Object.assign解释它们在@angular/material源中的用法
我一直在试图理解这段代码发生了什么 我知道CombineTest会发出一个值,从每个可见光中发出最后一个发出的值。 and Object.assign将所有可枚举自身属性从一个或多个源对象复制到目标对象 到目前为止,我理解这一点,但我不明白的是它们在该上下文中是如何一起使用的(combineLatest和Object.assign)Javascript Rxjs CombineTest和Object.assign解释它们在@angular/material源中的用法,javascript,angular,rxjs,Javascript,Angular,Rxjs,我一直在试图理解这段代码发生了什么 我知道CombineTest会发出一个值,从每个可见光中发出最后一个发出的值。 and Object.assign将所有可枚举自身属性从一个或多个源对象复制到目标对象 到目前为止,我理解这一点,但我不明白的是它们在该上下文中是如何一起使用的(combineLatest和Object.assign) combineLatest(_route.pathFromRoot.map(route => route.params), Object.assign) 这
combineLatest(_route.pathFromRoot.map(route => route.params), Object.assign)
这是一个参考对象。分配用作投影函数请参见
\u route.pathFromRoot.map(route=>route.params)
将返回一个可观察的数组
combineLatest
将获取数组中每个可观察对象的最新值,然后将其传递到投影函数中,从而生成一个具有所有参数作为属性的对象。combineLatest
用于具有可选的resultSelector
参数,您可以在其中将结果映射到所需的任何对象。因此,他们正在使用对象。将指定为结果选择器。此参数现在已被弃用,您应该改用map()
因此,他们使用这种语法将所有排放合并到一个对象中(我认为这是使用object.assign
的非常聪明的方式:)
没有resultSelector
参数的等效代码应该如下所示:
combineLatest(_route.pathFromRoot.map(route => route.params))
.pipe(
map(Object.assign.apply),
)
resultSelector
函数将结果作为单独的参数接收(res1,res2,res3)
,而combinerelatest
将它们进一步传播到单个数组中([res1,res2,res3])
,所以我不能只使用映射(Object.assign)
,所以基本上它们使用的是折旧结果选择器,是的,文档中已经没有提到它了。你能为map(Object.assign.apply)和map(Object.assign)apply()添加一个小例子吗