zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    第二章 课后习题 6
    第二章 课后习题 5
    第一章 课后习题 10
    第一章 课后习题 7
    JAVA练习1
    作业2
    作业
    c++作业10月13日作业
    c++作业50页例题3.1
    for循环作业4和5
  • 原文地址:https://www.cnblogs.com/_error/p/9089728.html
Copyright © 2011-2022 走看看