簡體   English   中英

Zip可重放的RxJS可觀察量

[英]Zip replayable RxJS observables

我想以類似於zip方式組合幾個可重放的不完整的observable來保存最后一個值(本例中為BehaviorSubject ),但是為了使得結果observable在任何源observable發出時發出一個值。

這是一個小提琴

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”}

如何才能做到這一點?

使用combineLatest()運算符:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM