在vue
中经常使用axios
发起网络怎样解决請求超时与服务器进行数据交互。在使用过程中会有许多问题存在比如由于网络不稳定导致怎样解决请求超时超时/失败,通常有两种解决方案一种是提示用户重新提交怎样解决请求超时,另一种是进行相关提示并自动重新发送怎样解决请求超时第二种方式用户体验奣显高于第一种方式。本文就针对第二种方式设计一个解决方案
怎样解决请求超时失败无论是网络异常还是其他原因,都会走到响应拦截器里因此对于怎样解决请求超时结果的相关处理,重点放在响应拦截器上而怎样解决请求超时异常的处理则放在响应拦截器的第二個回调函数里面。
思路很简单在响应拦截器中拦截到异常信息,通过分析异常信息来直接从拦截器中重新发送怎样解决请求超时整个過程对于调用怎样解决请求超时的业务代码中来说是毫无感知的,只需等待resolve
结果即可
经过错误代码判断,需要進行重新发送的时候将怎样解决请求超时的config直接传入httpClient.request
中。这里加了一个timeout
定时器是为了防止怎样解决请求超时频率过高,当网络连接异瑺时怎样解决请求超时响应时间是非常短的,如果马上进行怎样解决请求超时就会导致进入死循环甚至递归调用栈溢出。
整个过程实際上是一个递归调用怎样解决请求超时的过程重新发送次数过多可能会导致递归溢出问题,使用递归的原因是为了保证所有怎样解决请求超时用的是同一个axios
示例当然,config
里面几乎包含了所有的配置也可以直接使用axios.request
进行怎样解决请求超时。区别就在于如果在怎样解决请求超时拦截器中设置了一些操作可能会有一些问题
本文提供一种通过使用拦截器的解决方案,其中还有可以改进的地方比如加入重新怎樣解决请求超时次数限制,或者最长等待时间等核心在于如何灵活的使用axios
的拦截器来处理怎样解决请求超时异常,亦或是怎样解决请求超时/响应数据的统一处理等可以在拦截器中统一处理一些业务无关的逻辑,时调用者更专注于业务代码开发