2017-07-12 29 views
1

如果響應在響應正文中包含一些錯誤代碼,我該如何修改此承諾代碼以引發錯誤?Promise()的ECMA 6語法

return this.httpService.post('/create', data) 
         .toPromise() 
         .then(response => response.json() as CreatedResponse) 
         .catch(this.handleCreateError); 

這是.then(response => response.json() as CreatedResponse)我需要修改拋出一個錯誤,如果response.json().hasError是真實的。否則,承諾應該解決。

+4

添加'。然後(JSON => json.hasError Promise.reject():JSON)' – 4castle

+0

@ 4castle我正要張貼像你評論。 – SaiUnique

回答

3

你可以在你的then回調中拋出任何錯誤。所以你的情況可能是:

return this.httpService.post('/create', data) 
        .toPromise() 
        .then(response => response.json() as CreatedResponse) 
        .then(json => { 
         if (json.hasError) { 
          throw Error('Response is not valid'); 
         } else { 
          return json; 
         } 
        }) 
        .catch(this.handleCreateError);