Javascript 使用Rxjs进行优化
我有一段代码,比如Javascript 使用Rxjs进行优化,javascript,angular,typescript,rxjs,Javascript,Angular,Typescript,Rxjs,我有一段代码,比如 if (this.organization) { this.orgService.updateOrganization(this.createOrganizationForm.value).subscribe(() => { this.alertify.success(`Organization ${this.organization.name} was updated`); this.dialogRef.close(true); }); } e
if (this.organization) {
this.orgService.updateOrganization(this.createOrganizationForm.value).subscribe(() => {
this.alertify.success(`Organization ${this.organization.name} was updated`);
this.dialogRef.close(true);
});
} else {
this.isLoading$.next(true);
this.orgService.createOrganization(this.createOrganizationForm.value).subscribe(
() => {
this.alertify.success('New organizations was successfully added');
this.dialogRef.close(true);
this.isLoading$.next(false);
},
(error) => {
this.alertify.error('\n' + error);
this.isLoading$.next(false);
},
);
}
我的问题是什么是最好的运营商或使用订阅一次的方式。如果存在,我可以在Rxjs中使用哪个操作符来优化它并订阅一次,或者如果有其他方法。看到订阅回调中的内容可能会被视为副作用,我想说,您可以使用
iif
函数以及tap
和catchError
操作符来确定可观察到的副作用
试试下面的方法
从'rxjs'导入{of,iif};
从“rxjs/operators”导入{tap,switchMap};
const updateOrg$=this.orgService.updateOrganization(this.createOrganizationForm.value).pipe(
点击(()=>{
this.alertify.success(`Organization${this.Organization.name}已更新`);
此.dialogRef.close(true);
})
);
const createOrg$=of(null).pipe(
点击(()=>this.isLoading$.next(true)),
switchMap(()=>this.orgService.createOrganization(this.createOrganizationForm.value)),
水龙头(
() => {
this.alertify.success('已成功添加新组织');
此.dialogRef.close(true);
此.isLoading$.next(false);
},
(错误)=>{
this.alertify.error('\n'+error);
此.isLoading$.next(false);
}
)
);
iif(
()=>这个组织,
updateOrg$,
createOrg$
).subscribe();