拿起Typescript做一个轮子(四)

处理网络异常错误

当网络出现异常的时候发送请求会触发XMLHttpRequest对象实例的error事件,于是我们可以在onerror的事件回调函数中捕获此类错误。

我们在xhr函数中添加以下代码:

处理超时错误

我们可以设置某个请求的超时时间timeout,也就是当请求发送超过某个时间后仍然没收到响应,则请求自动终止,并触发timeout事件。

请求默认的超时时间是0,所以我们首先需要允许配置超时时间。

拿起Typescript做一个轮子(四)_第1张图片

接下来在xhr函数中添加超时处理逻辑:

拿起Typescript做一个轮子(四)_第2张图片

处理非200状态码

对于一个正常的请求,往往会返回200-300之间的HTTP状态码,对于不在这个区间的状态码,我们也把它们认为是一种错误的情况处理。

我们再来改造下xhr函数:

拿起Typescript做一个轮子(四)_第3张图片

拿起Typescript做一个轮子(四)_第4张图片

错误信息增加

之前我们已经捕获了几类AJAX的错误,但是对于错误信息的提供非常有限,我们希望不仅包含错误文本信息,还包含了请求配置对象config,错误代码code,XMLHttpRequest对象实例request以及自定义响应对象response。

创建AxiosError类

先定义AxiosError类型接口:

拿起Typescript做一个轮子(四)_第5张图片

接着我们在helper文件夹下创建error.ts文件,然后实现AxiosError类

拿起Typescript做一个轮子(四)_第6张图片

应用createError方法

改造xhr方法

拿起Typescript做一个轮子(四)_第7张图片

到此我们对错误的处理就完成了,之后我们对axios接口做扩展,支持更多的api。

你可能感兴趣的:(拿起Typescript做一个轮子(四))