[英]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.