axios 中取消请求
axios 取消请求
const CancelToken = axios.CancelToken // 获取CancelToken对象
let { token, cancel } = CancelToken.source() // source 方法返回 token 和 cancel
// token 是个标识 cancel是个方法,把同一次返回的token所指定的请求取消掉
axios.get('url',{cancelToken: token}) // 把标识token指定到请求上
axios.post('url',{},{cancelToken: token})
cancel(message) // 取消请求
source 方法

const CancelToken = axios.CancelToken;
let cancel;
axios.get('url', {
cancelToken: new CancelToken(function executor(c) {
cancel = c;
})
});
cancel();

新的取消方法 AbortController
// 就换了写发
const {signal,abort} = new AbortController()
axios.get('url', {signal: signal})
abort() // 取消
取消请求: 取消服务器还没接收到的请求, 取消成功会触发error, 服务器接收到的请求则不能取消,取消无效。(网络不好的时候请求耗时比较长,接口pending 一般是后台的处理等待中)
primose 取消请求
- Promise.all 成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值
- Promise.race 看谁执行的最快,返回最快的那个结果,不管结果本身是成功状态还是失败状态
基本思路就是,我们给每一个请求身边都放一个Promise对象,这个对象就是一颗炸弹,将他们一起放到Promise.race里面,当我们需要取消请求的时候就可以点燃这颗炸弹。

使用promise的方法,仅仅只是通过改变promise的状态来阻止响应结果的接收,服务还是照常发送的