有一个需求,需要在请求超时的时候做处理。自然就想到在axios的response的失败回调中处理,网上方法很多不赘述,说一下遇到的问题吧。手上有几个项目我都用同样的方法实现了,最后测试给我的反馈是:某一个项目中人为降低接口的速度使之远超过超时时间(5s)。结果是界面一直被我loading住,然后会等到接口完全响应过了很长一段时间后仍然可以刷出数据。打了断点看到确实最后进入了response的成功回调中,也就是timeout失效了。
我翻了一下源码:
![a5b8f4eb4920a99ccc7f2dd7f88d08b7.png](https://i-blog.csdnimg.cn/blog_migrate/722bbeee4e3fa4d0f6ffe055fa55b2ff.jpeg)
正常的超时都会从此进入,我检查了timeout是否缺失。发现仍然是有的
![bdcb4803fdd5726a1bd0ad0b997e8fc0.png](https://i-blog.csdnimg.cn/blog_migrate/0653b0a8b832ec30ea20192fed8fb396.png)
一直纠结在超时时间上,尝试过设置很大的延迟,接口完成一共花了6分钟,仍然不会超时,6分钟后照样得到正常的数据。靠!
![4409d8e0a1963bc28728efe0a685b4c7.png](https://i-blog.csdnimg.cn/blog_migrate/822423244e217ec1e16b95cd2d7cc681.jpeg)
这就很难受了,两个项目写的一样的为啥这个就坏了。
最后老王提醒我“你把请求发送的原始的xmlHttpRequest的实例对象 console出来 看看”
![55c09e8a9ea8ae108f5c48bb52e4fc00.png](https://i-blog.csdnimg.cn/blog_migrate/aa74431bac6cc40107f75e615836aa59.jpeg)
卧槽,怎么是个mock... 原来被mockjs影响了。回想起之前查过的资料中有人一笔带过这个内容。mockjs还是在接口通了之后删掉吧!
最后 // import mock from 'mockjs';
点个赞再走吧
![210e6401cd3d539e4affb66a4e6280b1.png](https://i-blog.csdnimg.cn/blog_migrate/9775e6a63a647a484496dbf59172794b.jpeg)