javascript - 覆盖订阅是否会自动取消订阅以前的值?

标签 javascript angular rxjs

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

  private _sub: Subscription;
在初始化时,我订阅了一个 firebase get 函数:
this._sub = this.service.get('database1').subscribe(
   data => {
      this.ListOfData = data;
   }
);
但根据用户输入,我更改 database1到其他集合,或使用不同的方法而不是 get() .
当我覆盖 _sub上一个流会自动取消订阅,还是我必须在覆盖之前手动完成?

最佳答案

简短的回答:不,它没有......我将分享原因的详细信息
每当.subscribe()被称为,a new instance of a Subscription is created包含监听 Observable 执行的资源。如果您调用.subscribe()不要调用.unsubscribe() ,您的订阅仍在使用资源。在某些情况下(取决于与 Observable/Subject 关联的逻辑),它可能会导致应用程序出现意外行为并影响性能。这就是为什么最好的做法是调用 .unsubscribe()在您的 Subscription 上当你完成它时。
还有一些函数叫做 RxJS operators这可以帮助您通过根据特定条件自动取消订阅来管理您的订阅。

关于javascript - 覆盖订阅是否会自动取消订阅以前的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67478804/

相关文章:

angular - 消息 : "SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (SQL: select * from ` users`. ..)”

angular - 通过项目的可观察属性将可观察数组过滤为另一个可观察数组(另一种类型)

angular - 与其他组件或服务共享可观察量

javascript - 如何将 &lt;script&gt; 标签放入 <div> 标签中?

javascript - 在 Angular 4 中使用单击外部时如何关闭弹出屏幕?

angular - react 形式 : Radio button selects both

rxjs - @ngrx 选择器并行发射两次

宽度未知的 div 所需的 Javascript/CSS 解决方案

javascript - 异常处理,抛出的错误, promise 内

javascript - reactStringReplace() 不一致的正则表达式匹配