我正在使用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中的对象吗?是否有其他运算符来简化代码?欢迎回答这些问题中的任何一个(或多个)。
答案 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>