2016-12-26 41 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

回答