38926


以下を参考にPromise処理を追加しました。  
<https://angular.io/tutorial/toh-pt6>

例えば、以下のような処理で  
this.http.getがエラーとなった場合、  
「.catch」で指定した「handleError」が呼ばれることは確認できました。  
たとえば特定のエラーの場合にgetHeroes()の呼びもとに返すことは可能なのでしょうか？

下記のような場合に★１処理をそのまま続行させたいです。

[code]

    this.httpService.getHeroes()
      .then(response => {
        ★１
      })
    
    
    private heroesUrl = 'api/heroes';  // URL to web api
    
    constructor(private http: Http) { }
    
    getHeroes(): Promise<Hero[]> {
      return this.http.get(this.heroesUrl)
                 .toPromise()
                 .then(response => response.json().data as Hero[])
                 .catch(this.handleError);
    }
    
    private handleError(error: any): Promise<any> {
      console.error('An error occurred', error); // for demo purposes only
      return Promise.reject(error.message || error);
    }
    
[/code]


CC BY-SA 3.0
2017-10-20T10:31:52.183
38910
2017-10-21T08:03:23.973
2017-10-20T12:08:35.647
76
12842
question
angular4
Promiseのエラー処理について


handleErrorでrejectされたPromiseを返さなければ良いです。

[code]

    if(特定エラー){
     const response = {}
     return response
    }else{
        return Promise.reject(error.message || error);
    }
    
[/code]

then.catch.then  
とチェインした時、catchが正常であれば、それに続くthenが処理されます。  
現状は、Promise.rejectでエラーを返しているので、それに続くthenが処理されません。


CC BY-SA 3.0
2017-10-21T08:03:23.973
38926
2017-10-21T08:03:23.973
4191
38910
answer