Angular 如何以异步方式删除/更新以及何时取消订阅?
我现在是个有棱角的新手 async pipe的主要目标之一是自动处理订阅和取消订阅 1. 当处理删除或更新(两者都是API服务)时,我是否需要通过Ngondestory取消订阅Angular 如何以异步方式删除/更新以及何时取消订阅?,angular,rxjs,Angular,Rxjs,我现在是个有棱角的新手 async pipe的主要目标之一是自动处理订阅和取消订阅 1. 当处理删除或更新(两者都是API服务)时,我是否需要通过Ngondestory取消订阅 projects$: Observable<Project[]>; constructor( private projectService: ProjectService, ) { } ngOnInit() { this.loadProject(); } loadProject(
projects$: Observable<Project[]>;
constructor(
private projectService: ProjectService,
) { }
ngOnInit() {
this.loadProject();
}
loadProject(){
this.projects$ = this.projectService.getProjects()
.pipe(
map(result => {
if(result.success){
return result.data;
}
})
);
}
deleteProject(){
if(this.projectToDelete){
const id = this.projectToDelete.id;
this.projectService.deleteProject(id).subscribe(result => {
if(result.success){
this.loadProject();
}
});
}
}
这实际上取决于您的需求,但您可以始终使用
async
管道,该管道将通过subscribing
和unsubscribing
为您处理可观察对象的生命周期
-您可以使用一些RxJS操作符来为您处理取消订阅
。像take(1)
,first()
,of()
,from()
-如你所说,取消订阅NGD
而且,销毁不是一件可以观察到的事情,你要么取消订阅
,完成
,要么两者兼而有之
在反应式编程中,最好使用声明式方法
等等,那是什么
testObject$ = this.http.get(url).pipe(
map((resp: any) =>
({
id: resp.data.id,
view: resp.data.view,
resourceName: resp.data.resourcename,
loadCapacity: resp.data.loadcapacity
}) as TestObject)
);
}
你知道我做了什么吗?我删除了这个方法
然后在您的组件中,将其称为testService.testObject$
你看我做了什么,我放弃了这个方法,原因如下:
testObject$ = this.http.get(url).pipe(
map((resp: any) =>
({
id: resp.data.id,
view: resp.data.view,
resourceName: resp.data.resourcename,
loadCapacity: resp.data.loadcapacity
}) as TestObject)
);
}