使用SubSink代替Subscriptions数组有什么意义

时间:2019-05-20 07:06:36

标签: typescript rxjs observable rxjs6

我刚刚观看了约翰·帕帕(John Papa)的ngConf视频,该视频谈论SubSink是最佳做法,以便取消订阅可观察对象。

我实际上是在使用Subscriptions [],然后将订阅推送到其中,然后for每次在cmp销毁时取消订阅。

是我错过了他们的东西,还是使用SubSink只是为了提高可读性?

2 个答案:

答案 0 :(得分:2)

采用这种方式至少有一个巨大好处-您将此代码移到了应用程序逻辑之外。我认为那是主要的好处。因为取消订阅只是一种清理。它与您在应用程序中创建的逻辑无关。就像在家中一样,您不必将清洁设备留在房间内(@Component)。您将其置于封闭状态,因此不会打扰您。

再往前走一步,您可以从组件中省略ngOnDestroy,并创建一个实现了NgOnDestroy的适配器,并将所有逻辑放置在那里(现在您的清洁设备仅放置在一个房间中({{ 1}})。现在,它所困扰的程度甚至更低。

@Component

How to automatically unsubscribe your RxJs observables

除此之外,它是一个非常小的程序包,只有几行代码。感谢您的分享:)我一定会使用它的。

答案 1 :(得分:0)

另一种无需安装第三方库的方法是使用.add()方法对订阅进行分组

export class CustomerComponent implements OnInit, OnDestroy {
  constructor(
    private dataService: DataService
  ){}

  private subs = new Subscription();

  ngOnInit() {
    this.subs.add(this.dataService.getCustomer().subscribe());
    this.subs.add(this.dataService.getProducts().subscribe());
  }

  ngOnDestroy() {
    this.subs.unsubscribe();
  }
}