Javascript .first()运算符影响其他订阅

Javascript .first()运算符影响其他订阅,javascript,rxjs,rxjs5,Javascript,Rxjs,Rxjs5,示例代码: 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 su

示例代码:

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(),而不使用任何回调来更改
.first()
操作符的行为

如果我在
.subscribe()
方法中传递任何
next
回调,
.first()
操作符将正常工作

例如,在
secondSub
change中

.subscribe()


当您将空(
undefined
)与
subscribe()
一起使用时,库中当前存在错误

现正通过以下方式解决这一问题:

同时,如果您像这样更新代码,事情将按预期进行

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({})

非常感谢。这就解释了奇怪的Rx行为。
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({})