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