Zip可重放的RxJS可观察量

时间:2017-02-15 11:34:12

标签: javascript rxjs observable rxjs5

我想组合几个可重放的不完整的observable,它们以类似BehaviorSubject的方式保存最后一个值(在这种情况下为zip),但是为了使得结果observable在任何时候发出一个值source observables发出。

此处a fiddle

const foo$ = new Rx.BehaviorSubject('foo');
const bar$ = new Rx.BehaviorSubject('bar');

setTimeout(() => foo$.next('foo 1'), 1000)
setTimeout(() => bar$.next('bar 1'), 2000)

const foobar$ = Rx.Observable.zip(foo$, bar$);

foobar$.subscribe(([foo, bar]) => console.log({ foo, bar }));

由于zip运算符的工作原理,上面的代码将输出:

  

{foo:" foo",bar:" bar"}

     

{foo:" foo 1",bar:" bar 1"}

虽然我希望它是

  

{foo:" foo",bar:" bar"}

     

{foo:" foo 1",bar:" bar"}

     

{foo:" foo 1",bar:" bar 1"}

如何做到这一点?

1 个答案:

答案 0 :(得分:3)

使用combineLatest()运算符:

const foobar$ = Rx.Observable.combineLatest(foo$, bar$);

您的最新演示:https://jsfiddle.net/d1wo1usx/