我已经阅读了一些有关Observable和退订的文章。但是我不了解关于pipe()的信息。管道在某些情况下会自动退订。这些是什么情况我有一项服务可用于连接服务器和一个组件。我应该在这里退订并使用ngOnDestroy吗?它为CRUD应用程序提供了简单的服务。
例如,服务中的一种方法:
public getSubject(size:number, page:number) : Observable<Subject[]> {
return this.http.get<Subject[]>(environment.apiUrl + '/subject?size='+size+'&page='+page)
.pipe(
map(data=>{
return data;
}),
catchError(err => {
return throwError(err);
}));
}
以及将组件与驱逐舰一起使用的服务。
//...some code
pageClick() {
this.subscriptions.add(this.connector.getSubject(this.pageSize, this.page - 1)
.subscribe(data => {
this.subject = data;
this.errorFlag = false;
}, error => {
this.error = error.error.message;
this.errorFlag = true;
}));
}
//..some code..
@HostListener('window:beforeunload')
ngOnDestroy() {
this.subscriptions.unsubscribe();
}
答案 0 :(得分:4)
无需取消订阅已完成的Observable。当HttpClient从服务器获取响应并将其发出给Observable组件中的订阅时,该响应就完成了,因此不再发出任何值。如果不发送值,则不会有内存泄漏的风险,这就是取消订阅的原因。
“管道在某些情况下会自动取消订阅”- .pipe 用于通过向数据流添加一些运算符来修改数据流。它不负责订阅或取消订阅。