我正在尝试使用Axios更好地理解JavaScript Promise。我的目标是在Request.js中处理所有错误,并且只需从任何地方调用请求函数而无需使用catch()
。
在这个例子中,请求的响应将是400,JSON中包含错误消息。
这是我遇到的错误:
Uncaught (in promise) Error: Request failed with status code 400
我唯一找到的解决方法是在Somewhere.js中添加.catch(() => {})
,但我正在努力避免这样做。这可能吗?
以下是代码:
Request.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!')
}
)
}
...
}