我正在尝试使用 Axios 更好地理解 javascript Promise。我假装是处理 Request.js 中的所有错误,并且只从任何地方调用请求函数而不必使用catch().
在此示例中,对请求的响应将为 400,并带有 JSON 格式的错误消息。
这是我得到的错误:
Uncaught (in promise) Error: Request failed with status code 400
我找到的唯一解决方案是添加.catch(() => {})Somewhere.js,但我试图避免这样做。是否可以?
这是代码:
请求.js
export function request(method, uri, body, headers) {
  let config = {
    method: method.toLowerCase(),
    url: uri,
    baseURL: API_URL,
    headers: { 'Authorization': 'Bearer ' + getToken() },
    validateStatus: function (status) {
      return status >= 200 && status < 400
    }
  }
  ...
  return axios(config).then(
    function (response) {
      return response.data
    }
  ).catch(
    function (error) {
      console.log('Show error notification!')
      return Promise.reject(error)
    }
  )
}
某处.js
export default class Somewhere extends React.Component {
  ...
  callSomeRequest() {
    request('DELETE', '/some/request').then(
      () => {
        console.log('Request successful!')
      }
    )
  }
  ...
}