覆盖订阅是否会自动取消订阅之前的值?

我在角度应用程序中有以下订阅:

  private _sub: Subscription;

在初始化时,我订阅了一个 firebase get 函数:

this._sub = this.service.get('database1').subscribe(
   data => {
      this.ListOfData = data;
   }
);

但是根据用户输入,我更改database1为其他集合,或者使用不同的方法而不是get().

当我覆盖_sub时,先前的流会自动取消订阅,还是必须在覆盖之前手动执行?

回答

简短回答:不,它没有......我将分享原因的详细信息

每当.subscribe()被调用时,都会创建一个新的 a 实例,Subscription其中包含监听 Observable 执行的资源。如果您调用.subscribe()并且不调用.unsubscribe(),则您的订阅仍在使用资源。在某些情况下(取决于与 Observable/Subject 关联的逻辑),它可能会导致您的应用程序出现意外行为并影响性能。这就是为什么最好的做法是在你完成后打电话.unsubscribe()给你Subscription

还有一些称为RxJS 操作符的函数,可以通过根据某些条件自动取消订阅来帮助您管理订阅。


以上是覆盖订阅是否会自动取消订阅之前的值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>