javascript - 没有引用句柄的订阅实例是否需要退订?

标签 javascript node.js angular typescript rxjs

只是好奇未被引用的Subscription实例是否需要取消订阅?例如this demo调用:

onSubmit(creds: Creds) {
   this.authService.login(creds).subscribe();
}

所以每次某人登录时,都会创建并返回一个订阅实例,但没有它的句柄。

IIUC 这些只会被垃圾收集,但我想为了安全起见我会仔细检查。

最佳答案

如果 Observable 完成,则无需取消订阅。使用 http 服务创建的 Observable 将在调用后完成。

也就是说,最好还是取消订阅或使用 takeUntil 子句。

finalise = new Subject<void>();

onSubmit(creds: Creds) {
  this.authService.login(creds).pipe(takeUntil(finalise)).subscribe();
}

ngOnDestroy() {
  this.finalise.next();
  this.finalise.complete();
}

这样您就可以使用同一个主题来完成您所有的 Observable,而不是管理许多订阅。

关于javascript - 没有引用句柄的订阅实例是否需要退订?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843889/

相关文章:

javascript - highcharts条形图: columns width is very thin

node.js - 如何在请求中使用 cookie(request、tough-cookie、node.js)

node.js - Browserify 捆绑输出非常大,无法找到调试过程的方法

jquery - Angular 2 : setTimeout for everything?

Angular 5 : httpClient is not returning JSON

html - 如何在 Angular2 中使用 *ngFor 动态生成 ngModel?

javascript - 保护我的私有(private) API

javascript - Internet Explorer 中我的 magento 网站上显示的小空白框

javascript - AngularJs 无法从本地加载 JSON 文件 "Maven Project"

node.js - NodeJS + Socket.io : client won't connect on Ubuntu server in homenetwork