。首先()操作会影响其他订阅
问题描述:
示例代码:。首先()操作会影响其他订阅
const test1$ = Rx.Observable.interval(1000)
const test2$ = Rx.Observable.interval(1000)
// This subscription need to get every value continuously
const firstSub = test2$
.do(val => console.log('Service: ', val))
.subscribe()
// This subscription need to get only first value and stop
const secondSub = Rx.Observable.combineLatest(test1$, test2$)
.do(val => console.log('Method: ', val))
.first()
.subscribe()
- 首先订阅启动应用程序启动之后。
- 第二次订阅由点击事件启动(因此它可以运行几次)。
当我使用两种.first()
或.take(1)
运营商,在某种程度上第一签约太受到它的影响,并停止获取值。
如何更改该行为以仍然从第一次订阅获取值,而仅从第二次订阅获取一个值并停止?
答
目前库中的一个bug,当你使用一个空(undefined
)与subscribe()
。 https://github.com/ReactiveX/rxjs/pull/2238
,如果你更新你的代码像这样,如预期的东西会工作在此期间:
这是由正在处理。
const test1$ = Rx.Observable.interval(1000)
const test2$ = Rx.Observable.interval(1000)
// This subscription need to get every value continuously
const firstSub = test2$
.do(val => console.log('Service: ', val))
.subscribe({})
// This subscription need to get only first value and stop
const secondSub = Rx.Observable.combineLatest(test1$, test2$)
.do(val => console.log('Method: ', val))
.first()
.subscribe({})
答
看起来像使用.subscribe()而没有任何回调会改变.first()
运算符的行为。
如果我通过任何next
回调.subscribe()
方法,.first()
运营商将正常工作。
例如,在secondSub
变化
.subscribe()
到
.subscribe(test => console.log('Method: ', test))
谢谢。这解释了奇怪的Rx行为。 –