如何实现30秒未收到响应时向控制台输出错误?
Axios请求超时处理:实现原理与修改方案
实现原理
- Axios内置了超时控制机制,通过
timeout参数可以指定请求的最大等待时长(单位为毫秒)。当请求发起后,若在设定时长内未收到服务器响应,Axios会主动终止该请求,并抛出一个错误码为ECONNABORTED的异常。 - 我们可以通过
catch方法捕获这个超时异常,从而针对性地输出对应的错误提示。
修改方法
直接修改原有代码,添加超时配置并针对性处理超时错误:
const req = await axios.post(`http://316.132.61.31:2000`, {}, { timeout: 30000 // 设置30秒超时,单位为毫秒 }) .catch(err => { // 区分超时错误与其他请求错误 if (err.code === 'ECONNABORTED') { console.log('请求超时:30秒内未收到响应'); } else { // 处理其他类型的请求错误 console.log('请求出错:', err); } });
- 若请求需要传递请求体数据,把数据放在
axios.post的第二个参数位置,第三个参数放超时配置;如果没有请求体,第二个参数可以传空对象{},或者直接将配置对象作为第二个参数传入。 - 通过
err.code === 'ECONNABORTED'判断是否为超时错误,避免把其他类型的请求错误(比如网络断开、接口404等)误判为超时。
内容的提问来源于stack exchange,提问作者user20431123
相关产品推荐
相关产品推荐

