不带参考句柄的订阅实例是否需要取消订阅?

Ole*_*Ole 3 javascript node.js rxjs typescript angular

只是好奇是否Subscription需要取消订阅未被引用的实例?例如,此演示调用:

onSubmit(creds: Creds) {
   this.authService.login(creds).subscribe();
}
Run Code Online (Sandbox Code Playgroud)

因此,每次有人登录Subscription实例时都会创建并返回,但是没有句柄.

IIUC这些只是垃圾收集,但我想要仔细检查以确保安全.

Adr*_*and 5

如果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();
}
Run Code Online (Sandbox Code Playgroud)

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

  • 还要确保takeUntil子句是管道中的最后一个函数,之前放置任何其他函数,如map和filter. (2认同)