取消订阅级联可观察对象的销毁

时间:2019-02-21 08:39:45

标签: angular rxjs observable rxjs6

问候程序员,

我在Angular组件中有一个对observable的订阅,我想在第一个发射上立即运行subscribe函数,但是对所有后续反射都去抖动,就像这样实现:

concat(
  inputStream$.pipe(take(1)),
  inputStream$.pipe(
    skip(1),
    debounceTime(500))
).subscribe(val => someFunction(val));

但是,由于inputStream$来自外部服务,因此我希望在销毁组件时结束订阅。像往常一样,我有一个本地destroy$,它在ngOnDestroy上发出并且将要执行通常的takeUntil(this.destroy$)

但是,在这种情况下,我有点担心应该在哪里终止订阅。它是位于两个单独管道内的concat内,还是位于concat流本身的管道内?还是有另一种更好的方法来正确配置流,以实现此目的?

换句话说,我的两个建议是:

在每个管道内:

concat(
  inputStream$.pipe(
    take(1),
    takeUntil(this.destroy$)),
  inputStream$.pipe(
    skip(1),
    debounceTime(500),
    takeUntil(this.destroy$))
).subscribe(val => someFunction(val));

在concat流本身上:

concat(
  inputStream$.pipe(take(1)),
  inputStream$.pipe(
    skip(1),
    debounceTime(500))
).pipe(
  takeUntil(this.destroy$)
).subscribe(val => someFunction(val));

非常感谢您的帮助!

0 个答案:

没有答案