Rxjs - .withlatestfrom的多个来源

Pre*_*70R 18 rxjs ngrx angular

我想合并来自多个observable的最新发射值,所以现在我正在使用.withLatestFrom.除此之外,它将数据嵌套在嵌套数组中,而不是将数据推送到新的数组值.示例代码如下.

任何想法如何使用.withLatestFrom检索多个可观察的发射?

.withLatestFrom(source1)
.withLatestFrom(source2)
.withLatestFrom(source3)
.map((data) => { console.log(data) });
Run Code Online (Sandbox Code Playgroud)

adh*_*ris 41

withLatestFrom 支持多个可观察量:

.withLatestFrom(source1, source2, source3)
.map((data) => { console.log(data) });

-> [val, value1, value2, value3]
Run Code Online (Sandbox Code Playgroud)

它还支持函数作为它的最后一个参数,因此您可以获得除数组之外的值:

observable$
    .withLatestFrom(source1, source2, (val, one, two) => {
        return {val: val, one: one, two: two};
     });
Run Code Online (Sandbox Code Playgroud)

  • 我本来打算对这个答案投赞成票,但结果我已经投了赞成票 (3认同)
  • 你可以用`()`包装`{}`然后你不需要一个显式的return语句:`.withLatestFrom(source1,source2,(val,one,two)=>({val:val,one:one ,二:二}));` (2认同)

Jul*_*ova 7

withLatestFrom 接受多个 observable。所以你可以这样写:

let obs1$ = Rx.Observable.of('a');
let obs2$ = Rx.Observable.of('b');

Rx.Observable.interval(1000)
  .withLatestFrom(obs1$, obs2$)
  .subscribe(x=>console.log(x))
Run Code Online (Sandbox Code Playgroud)