rxjs如何最好地将args数组转换为对象

时间:2018-08-10 22:12:01

标签: angular rxjs ngrx

我正在使用withLatestFrom

.pipe(
  withLatestFrom(observable1$),
  map(([one, two]) => ({one, two})),
  tap((args) => { console.log(args) }}
)

,并带有forkJoin

.pipe(
  mergeMap((action) => forkJoin(
    of(action),
    observable1$.take(1),
    observable2$.take(1)
  )),
  map(([one, two, three]) => ({one, two, three})),
  tap((args) => { console.log(args) }} 
)

两种方法都将管道数组转换为对象(我发现更易于管理)。

但是有没有更简单的方法将数组转换为对象格式? 我可以映射到mergeMap中的对象吗?是否有其他运算符来简化代码?欢迎回答这些问题中的任何一个(或多个)。

1 个答案:

答案 0 :(得分:3)

几个RxJS运算符和函数当前支持结果选择器。例如,您可以在forkJoin调用中执行映射,如下所示:

.pipe(
  mergeMap((action) => forkJoin(
    of(action),
    observable1$.take(1),
    observable2$.take(1),
    (one, two, three) => ({ one, two, three })
  )),
  tap((args) => { console.log(args) }}
)

但是,result selectors are now deprecated-删除它们会大大简化实现和API-并且recommended approach是您采用的方法:使用map运算符。< / p>