Rxjs - .withlatestfrom的多个来源

时间:2017-04-19 18:43:35

标签: angular rxjs ngrx

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

如何使用.withLatestFrom?

检索多个可观察发射的任何想法
.withLatestFrom(source1)
.withLatestFrom(source2)
.withLatestFrom(source3)
.map((data) => { console.log(data) });

2 个答案:

答案 0 :(得分:29)

withLatestFrom支持多个observable:

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

-> [val, value1, value2, value3]

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

observable$
    .withLatestFrom(source1, source2, (val, one, two) => {
        return {val: val, one: one, two: two};
     });

答案 1 :(得分:3)

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