• Axios 拦截器 取消请求


    axios 最常用的功能之一,拦截器

    axios.interceptors.response.use(
      response => {
        let {data: json} = response
        let resp = json
        if(resp.code === 200) return resp;
        throw new Error(resp.msg)
      },
      error => {
          return Promise.reject(error)
        }
      },
    )

    在后台返回数据后,检测状态码为 200 ,则返回数据,否则,抛出异常

    另外一个功能,取消请求,以下来自官方

    var CancelToken = axios.CancelToken;
    var source = CancelToken.source();
    
    axios.get('/user/12345', {
        cancelToken:source.token
    }).catch(function(thrown){
        if(axios.isCancel(thrown)){
            console.log('Rquest canceled', thrown.message);
        }else{
            //handle error
        }
    });
    
    //取消请求(信息参数设可设置的)
    source.cancel("操作被用户取消");

    或者给 CancelToken 构造函数传递一个executor function来创建一个cancel token

    var CancelToken = axios.CancelToken;
    var cancel;
    
    axios.get('/user/12345', {
        cancelToken: new CancelToken(function executor(c){
            //这个executor 函数接受一个cancel function作为参数
            cancel = c;
        })
    });
    
    //取消请求
    cancel();
    //多数情况,我们封装的方法都是通过 export 输出,
    //所以 cancel 我们也可以通过 export 输出,这样就可以在主业务中随时调用
    export { cancel }
  • 相关阅读:
    少儿编程之我见
    异常处理:java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext
    Maven异常:Could not find artifact
    三种使用分布式锁方案
    技术栈
    给定一个数组,求两数之和等于某个值
    链表--部分知识点整理
    链表
    php序列化和反序列化学习
    data类型的url
  • 原文地址:https://www.cnblogs.com/_error/p/9089728.html
Copyright © 2020-2023  润新知