处理网络异常错误
当网络出现异常的时候发送请求会触发XMLHttpRequest对象实例的error事件,于是我们可以在onerror的事件回调函数中捕获此类错误。
我们在xhr函数中添加以下代码:
处理超时错误
我们可以设置某个请求的超时时间timeout,也就是当请求发送超过某个时间后仍然没收到响应,则请求自动终止,并触发timeout事件。
请求默认的超时时间是0,所以我们首先需要允许配置超时时间。
接下来在xhr函数中添加超时处理逻辑:
处理非200状态码
对于一个正常的请求,往往会返回200-300之间的HTTP状态码,对于不在这个区间的状态码,我们也把它们认为是一种错误的情况处理。
我们再来改造下xhr函数:
错误信息增加
之前我们已经捕获了几类AJAX的错误,但是对于错误信息的提供非常有限,我们希望不仅包含错误文本信息,还包含了请求配置对象config,错误代码code,XMLHttpRequest对象实例request以及自定义响应对象response。
创建AxiosError类
先定义AxiosError类型接口:
接着我们在helper文件夹下创建error.ts文件,然后实现AxiosError类
应用createError方法
改造xhr方法
到此我们对错误的处理就完成了,之后我们对axios接口做扩展,支持更多的api。