我在 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/