使用fetch api处理500响应

时间:2016-03-25 18:35:56

标签: typescript fetch aurelia

我们对fetch进行了以下调用。

this.http.fetch('flasher', { method: 'post', body: jsonPayload })
    .then(response => response.json())
    .then(data => console.log(data));

当我们收到200响应但当我们收到500响应时没有记录到控制台时,这是有效的。我们如何处理500?

1 个答案:

答案 0 :(得分:12)

工作解决方案

thencatch结合使用。

fetch('http://some-site.com/api/some.json')  
  .then(function(response) {                      // first then()
      if(response.ok)
      {
        return response.text();         
      }

      throw new Error('Something went wrong.');
  })  
  .then(function(text) {                          // second then()
    console.log('Request successful', text);  
  })  
  .catch(function(error) {                        // catch
    console.log('Request failed', error);
  });

详细

fetch()返回包含Promise对象的ResponsePromise可以成就或被拒绝。 Fulfillment运行第一个then(),返回其承诺,并运行第二个then()。拒绝在第一个then()上投放并跳转到catch()

参考

MDN - Promise

MDN - Checking that the fetch was successful

Google - Introduction to Fetch