假设我有以下代码:
this.myService.doSomething1.subscribe(SAME CODE FOR SUCCESS|ERROR|COMPLETE);
this.myService.doSomething2.subscribe(SAME CODE FOR SUCCESS|ERROR|COMPLETE);
this.myService.doSomething3.subscribe(SAME CODE FOR SUCCESS|ERROR|COMPLETE);
我如何为那些相同的订阅编写易于维护的代码,这样我就不必重复三次或更多次相同的代码?为了清楚起见,重复的代码如下:
(success: any) => {
this.sucess= true;
},
(err: HttpErrorResponse) => {
console.log(err);
});
在三种情况下都是相同的代码,我尽量避免重复三次。什么好主意吗?谢谢你!
您可以使用多个集中维护的函数并传递它们。
const suc = (value:object) => {
// do something
};
const err = (error: HttpErrorResponse) => {
// handle error
}
const complete = () => {
// handle complete
}
this.myService.doSomething1.subscribe(suc,err,comlete);
this.myService.doSomething2.subscribe(suc,err,comlete);
this.myService.doSomething3.subscribe(suc,err,comlete);
,如果您想进一步构建一个复合对象,并使用扩展操作符只拥有一个变量:
const default_sub = [suc,err,complete]
this.myService.doSomething1.subscribe(...default_sub);
你可以定义一个观察者。
import { Observer, PartialObserver } from 'rxjs';
const observer: Observer<any> = { // or use PartialObserver
next: (success: any) => {
this.sucess = true;
},
error: (err: HttpErrorResponse) => {
console.log(err);
},
complete: () => {
console.log('complete')
}
}
this.myService.doSomething1.subscribe(observer);
this.myService.doSomething2.subscribe(observer);
this.myService.doSomething3.subscribe(observer);