没有引用句柄的订阅实例是否需要取消订阅?

时间:2018-12-19 02:47:25

标签: javascript node.js angular typescript rxjs

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

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

因此,每次有人登录Subscription实例时,都会创建并返回该实例,但是没有处理。

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

1 个答案:

答案 0 :(得分:5)

如果Observable完成,则无需退订。使用http服务创建的可观察对象将在调用后完成。

那是说最好还是退订或有一个takeUntil子句。

finalise = new Subject<void>();

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

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

这样,您可以使用同一主题完成所有可观察项,而不必管理多个订阅。