rxjs:有 "joining" 替代 withLatestFrom 运算符吗?
rxjs: any "joining" alternative to withLatestFrom operator?
observable1.pipe(
withLatestFrom(observable2),
.. do something with both emitted observable values
)
withLatestFrom
的问题是,如果 observable2
在 observable1
之前没有发出任何事件,那么它就是死代码。我应该如何修改代码以确保 do something with both emitted observable values
在调用之前至少发出一次两个可观察值?也许 forkJoin
?
有一些包装
看起来像是 combineLatest 运算符的用例。该运算符采用一组可观察对象并等待每个对象至少发出一次。一旦所有的 observables 都发出了,操作符就会第一次发出。之后,它会在每次任何可观察对象发出时发出。
您可以使用 startWith()
强制执行第一次发射,您可以根据需要将其应用于可观察对象 1 和 2。
observable1.pipe(
withLatestFrom(observable2.startWith(null)),
.. do something with both emitted observable values
)
如果您正在寻找一个 pipable 运算符而不是 combineLatest
函数,您可以使用 RxJS combineLatestWith
。
observable1.pipe(
combineLatestWith(observable2),
// ... do something with both emitted observable values
)
observable1.pipe(
withLatestFrom(observable2),
.. do something with both emitted observable values
)
withLatestFrom
的问题是,如果 observable2
在 observable1
之前没有发出任何事件,那么它就是死代码。我应该如何修改代码以确保 do something with both emitted observable values
在调用之前至少发出一次两个可观察值?也许 forkJoin
?
看起来像是 combineLatest 运算符的用例。该运算符采用一组可观察对象并等待每个对象至少发出一次。一旦所有的 observables 都发出了,操作符就会第一次发出。之后,它会在每次任何可观察对象发出时发出。
您可以使用 startWith()
强制执行第一次发射,您可以根据需要将其应用于可观察对象 1 和 2。
observable1.pipe(
withLatestFrom(observable2.startWith(null)),
.. do something with both emitted observable values
)
如果您正在寻找一个 pipable 运算符而不是 combineLatest
函数,您可以使用 RxJS combineLatestWith
。
observable1.pipe(
combineLatestWith(observable2),
// ... do something with both emitted observable values
)