通过angular2

时间:2017-02-13 19:21:54

标签: http angular angular2-observables

试图找出一些可能对一个不是新观察者和angular2的人有明显答案的东西。

我正在调用http.get来从服务器获取数据。但是,如果存在某种错误,我想返回一组预定义的数据。 我意识到在我的订阅错误函数中我可以在那里加载预定义的数据,但我希望服务能够处理它。

所以如果我有这样做的服务......

  getCategories(): Observable<string[]>  {

  return this.http.get('http://localhost:3000/categories/')
                .map(this.extractData)
                .catch(this.handleError);


}


private handleError (error: Response | any) {
  let errMsg: string = "some error message"
  //want to return a constant here return CATEGORIES;
  return Observable.throw(errMsg);
}

而不是打电话

return Observable.throw(errMsg);

如何从.catch函数返回数据,以便订阅者不会知道差异 - 即它获取预定义数据而不是来自服务器的数据。

我的服务电话看起来像这样

this.myService.getCategories().subscribe(
                   cats => { this.categories = cats; },
                   error => {
                       console.log('Could not fetch categories', error)
                       //could do this but want it in service
                      //this.categories = CATEGORIES
                     },
                    () => console.log('Unknown error in get categories'));

有不同的方法吗? 感谢

1 个答案:

答案 0 :(得分:0)

return this.http.get('http://localhost:3000/categories/')
           .map(this.extractData)
           .catch(() => Observable.of(CATEGORIES));

请参阅the documentation