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