Javascript Rxjs CombineTest和Object.assign解释它们在@angular/material源中的用法

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) 这

我一直在试图理解这段代码发生了什么

我知道CombineTest会发出一个值,从每个可见光中发出最后一个发出的值。 and Object.assign将所有可枚举自身属性从一个或多个源对象复制到目标对象

到目前为止,我理解这一点,但我不明白的是它们在该上下文中是如何一起使用的(combineLatest和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()添加一个小例子吗