对相同订阅处理代码的更好的代码维护[Angular/Rxjs]



假设我有以下代码:

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);

最新更新