在开发单页面应用中,我们在使用 axios 做请求的时候,会遇到一些很不好的体验,当我们切换路由的时候,如果上个页面的请求还没结束,那么这个请求依旧会执行完,我们能不能在不需要的时候就取消掉你?
那么刚刚好, axios 可以实现这个需求。
有两种方法可以实现取消请求
方法一
官方示例
1 | const CancelToken = axios.CancelToken; |
方法二
官方示例
1 | const CancelToken = axios.CancelToken; |
我们这里使用第二种方式
我们定义三个方法:
addPending
1 | const pending = new Map(); |
removePending
1 | /** |
clearPending 用于在路由跳转时,清空所有请求
1 | /** |
我们在请求体中,添加 flag
属性,来识别每一个唯一的 API
1 | export function text(data) { |
这样我们的函数就写好了,只要在请求拦截中只用就可以实现了
1 | // 请求拦截 |
1 | // 响应拦截 |