javascript - axios超时后得到通知
问题描述
我有一个使用 axios 的 API 调用。超时设置为 2500 毫秒。我想要的是 axios 在超时后返回一个值,这样我就可以通知用户请求由于某些服务器或网络错误而中止。
我如何初始化超时
const instance = axios.create();
instance.defaults.timeout = 2500;
以下是超时后应返回值的函数
_post(url, body, token) {
return new Promise((resolve, reject) => {
instance
.post(url, body, {headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}})
.then(data => {
resolve(data);
})
.catch(error => {
reject(error);
});
});
}
谢谢!
解决方案
Axios 错误由code
property标识。
这是超时情况下的ECONNABORTED
代码。
上面的代码使用了 Promise 构造反模式。已经有一个promise,不需要创建一个新的:
_post(url, body, token) {
return instance
.post(url, body, {headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}})
.catch(error => {
if (error.code === 'ECONNABORTED')
return 'timeout';
else
throw error;
});
}
推荐阅读
- c# - UWP IoT 如何添加自定义字体
- c# - 在 Linux 上使用单声道的 C# 代码的 CIL 级调试器
- selenium - selenium 网格 Safari 替代方案(Docker 节点)?
- java - 我在编写阶乘程序时遇到困难
- html - 如何删除 h1 上方的空格?
- python - 执行在 python 中创建的应用程序时出现致命的 Python 错误
- swift - 如何在不使用标签栏控制器的情况下在情节提要之间切换
- javascript - jQuery .has() & .click() 函数问题
- reactjs - 在上下文中传递道具 [React]
- angular-material - Angular CLI 和材料表