Sal*_*ery 1 rest observable angular
我读过一些关于 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);
}));
}
Run Code Online (Sandbox Code Playgroud)
和组件使用带有销毁器的服务。
//...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();
}
Run Code Online (Sandbox Code Playgroud)
无需取消订阅已完成的 Observable。当 HttpClient 从服务器获取响应并将其发送到组件 Observable 中的订阅时,它已完成,因此它不再发出任何值。如果它不发出值,则不存在内存泄漏的风险,这就是取消订阅的原因。
“管道在某些情况下会自动取消订阅” - .pipe用于通过向其中添加一些运算符来修改数据流。它不负责订阅或取消订阅。
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |