RxJS 如何使用默认错误处理函数 return Observable
RxJS how to return Observable with default error handling function
在我的应用程序中,我有一些返回 Observable 的方法:
public myMethodReturningObs(...): Observable {
return this.http.get(...); // this will return an Observable
}
然后我在我的应用程序周围的几个地方调用这个方法:
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something with data */ },
(error) => { console.log('Error!'); }
);
// ...
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something else with data */ },
(error) => { console.log('Error!'); }
);
我想知道 myMethodReturningObs(...)
中是否有一种方法可以附加默认的错误处理函数,在我的示例中是 console.log('Error!');
,所以我不必每次都重复我订阅 myMethodReturningObs(...)
.
返回的 Observable 的时间
理想情况下我需要这样的东西:
public myMethodReturningObs(...): Observable {
return this.http.get(...)
.onError({ console.log('Error!'); }); // this will return an Observable
}
那么我可以这样做:
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something with data */ }
);
// ...
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something else with data */ }
);
您可以在基础 observable 中捕获错误,logit 并进一步传播
public myMethodReturningObs(...): Observable {
return this.http.get(...)
.catch(e => {
// log error
console.error('Failed', e);
// return same error, so subscriptions also fail
return Rx.Observable.throw(e)
});
}
在我的应用程序中,我有一些返回 Observable 的方法:
public myMethodReturningObs(...): Observable {
return this.http.get(...); // this will return an Observable
}
然后我在我的应用程序周围的几个地方调用这个方法:
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something with data */ },
(error) => { console.log('Error!'); }
);
// ...
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something else with data */ },
(error) => { console.log('Error!'); }
);
我想知道 myMethodReturningObs(...)
中是否有一种方法可以附加默认的错误处理函数,在我的示例中是 console.log('Error!');
,所以我不必每次都重复我订阅 myMethodReturningObs(...)
.
理想情况下我需要这样的东西:
public myMethodReturningObs(...): Observable {
return this.http.get(...)
.onError({ console.log('Error!'); }); // this will return an Observable
}
那么我可以这样做:
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something with data */ }
);
// ...
this.service.myMethodReturningObs().subscribe(
(data) => { /* do something else with data */ }
);
您可以在基础 observable 中捕获错误,logit 并进一步传播
public myMethodReturningObs(...): Observable {
return this.http.get(...)
.catch(e => {
// log error
console.error('Failed', e);
// return same error, so subscriptions also fail
return Rx.Observable.throw(e)
});
}