1
我有兩個可觀察到的one$
和two$
;rxjs - 有沒有像第一個運算符那樣等待?
我希望one$
只有在兩個$被激發至少一次時纔會觸發。我認爲這基本上是skipUntil
運營商。
one$.skipUntil(two$).subscribe()
但是,假設one$
已經解僱而two$
沒有。我想要一個行爲,其中流記得one$
已經發射並且至少會發射一次,只要two$
做了。
乾杯
我有兩個可觀察到的one$
和two$
;rxjs - 有沒有像第一個運算符那樣等待?
我希望one$
只有在兩個$被激發至少一次時纔會觸發。我認爲這基本上是skipUntil
運營商。
one$.skipUntil(two$).subscribe()
但是,假設one$
已經解僱而two$
沒有。我想要一個行爲,其中流記得one$
已經發射並且至少會發射一次,只要two$
做了。
乾杯
這看起來像您可以使用zip()
運營商發出只有當所有的源觀測量已經發出n
個項目n
個項目:
const one$ = Observable.from(['a1', 'a2', 'a3'], Scheduler.async);
const two$ = Observable.from(['b1'], Scheduler.async);
Observable.zip(one$, two$, (v1, v2) => v1)
.subscribe(val => console.log(val));
我加入Scheduler.async
只模擬異步行爲(更多信息參見combineLatest behaviour in Rxjs 5?)
這將打印到控制檯:
a1
只有當您知道one$
只會發出一次時,這才行。
最終,您可以使用combineLatest()
,它需要所有的源觀測站發射至少一個項目,然後發射任何發射,您可以忽略帶選擇器功能的two$
。
const one$ = Observable.from(['a1', 'a2', 'a3'], Scheduler.async);
const two$ = Observable.from(['b1', 'b2'], Scheduler.async);
Observable.combineLatest(one$, two$.take(1), (v1, v2) => v1)
.subscribe(val => console.log(val));
我們知道,我們只是想從two$
的第一個項目,其餘的可以忽略不計。
這將打印到控制檯:
a1
a2
a3