2016-12-26 62 views
1

我使用isomorphic-fetch执行从我react-redux应用AJAX请求安慰。在我的API中间件,我有以下函数调用外部资源:错误泡沫即使被处理

return callApi(callAPI).then(
    response => next(actionWith({ 
     response, 
     type: successType, 
     statusCode: 200 
    })), 
    error => error.json().then(errorObject => { 
     return next(actionWith({ 
      type: failureType, 
      statusCode: errorObject.statusCode, 
      error: errorObject.message || 'Something bad happened' 
     })); 
    }) 
); 

如果我Promise.reject(response)拒绝误差为:

import fetch from 'isomorphic-fetch'; 

function callApi({ endpoint, method, body, params = {} }) { 
    let route = generateRoute(endpoint, params); 
    return fetch(route, generateFetchOptions(method, body)) 
     .then(response => { 
      if (!response.ok) { 
       return Promise.reject(response); 
      } 

      return response.json(); 
     }); 
} 

上述功能是通过下面这段代码中调用由错误处理程序处理,但由于某种原因,错误也会冒泡到浏览器控制台(在我的情况下为Chrome)。

下面是从控制台一个屏幕快照,显示了所发生的事情(api.js:34callApi方法的第二行):(?大概在每一个浏览器)

console log

+0

哪些错误。特别是?你拒绝的'响应'甚至不是'错误'。 – Bergi

+0

我作为Promise.reject返回的任何错误。我做处理他们,但他们以某种方式设法进入控制台 –

+2

请发表您的控制台的屏幕截图。响应对象不是错误,不应该在控制台上显示。但是,代码中还有许多其他事情可能会出错,并导致出现错误。 – Bergi

回答