写在前面
这篇文章其实是 05. 如何从零开始封装 Axios 请求 的续集,在上一篇文章中讲了如何从零封装一个 Axios 请求,这次是对请求功能的补充,增加缓存功能,避免相同的请求多次请求服务器。
在项目中遇到了同一个页面中有多个表格,每个表格都需要重复请求同一个接口的请求而且传参都一样,为了避免在极短时间内重复请求,使用浏览器中的缓存中的上次的值,上次的值在指定时间内自动清除,再次请求时不再请求接口,直接返回缓存的值。
- 适配器模式
- 轮询,为什么要添加轮询。不轮询,没有返回数据,还是会发起请求。
- Map 集合,存储唯一值。
- 取消后续请求或只有最后一次请求
拦截器vs适配器
Axios 中拦截器和适配器有什么区别,要怎么选择。
具体实现
首先创建一个axiosCacheAdapter.js文件:
注意❗
注意上面代码的
axios
版本为0.19.0
, 其他版本可能会报错axios.defaults.adapter
not function。新的版本,如1.7.9
,有多种默认adapter,需要通过axios.getAdapter(axios.defaults.adapter[0])(config)
获取默认adapter。
然后在主应用中引入并使用这个适配器: