1

在我的应用程序中,我有一些返回 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!');,所以我每次订阅 Observable 返回时都不必重复它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 */ }
);
4

1 回答 1

2

您可以在基本 observable 中捕获错误,记录它并进一步传播

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)
        });
}
于 2017-11-23T10:49:30.820 回答