示例代码:
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)
操作员时,首先订阅也会受到它的影响,并停止获得值。
如何更改该行为以仍然从第一次订阅中获取值,而仅从第二个订阅中获得一个值并停止?
当您使用 subscribe()
的空(undefined
)时,库中当前有一个错误。
这是通过: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()
操作员行为。
如果我通过.subscribe()
方法中的任何next
回调,.first()
操作员将正常工作。
例如,在secondSub
中,更改
.subscribe()
to
.subscribe(test => console.log('Method: ', test))