zoukankan      html  css  js  c++  java
  • axios----请求拦截器||响应拦截器||取消请求

    1.请求拦截器:

        请求拦截器的作用是在请求发送前进行一些操作:

    // 后添加的拦截器,先执行!!!
    
            // 添加请求拦截器(回调函数)
            axios.interceptors.request.use(
                config=>{
                    console.log('request interceptor 请求拦截器1');
                    return config // return是为了继续向下传递, promise链式传递
                },
                error=>{
                    console.log('request error, 请求拦截器失败1');
                    return Promise.reject(error)// return Promise 是为了把错误继续向下传递
                })
            // 拦截器2先执行
            axios.interceptors.request.use(
                config=>{
                    console.log('request interceptor 请求拦截器2');
                    return config
                },
                error=>{
                    console.log('request error, 请求拦截器失败2');
                    return Promise.reject(error)
                })



    2.响应拦截器:

        响应拦截器的作用是在接收到响应后进行一些操作:

    // 添加响应拦截器
            axios.interceptors.response.use(
               response =>{
                    console.log('response intercept 响应拦截器1');
                    return response
               },
               function(error){
                   console.log('response intercept 响应拦截器失败1');
                   return Promise.reject(error)
               }
            )
            axios.interceptors.response.use(
               response =>{
                    console.log('response intercept 响应拦截器2');
                    return response
               },
               error=>{
                   console.log('response intercept 响应拦截器失败2');
                   return Promise.reject(error)
               }
            )


    请求拦截和响应拦截,  要拦截的请求地址:

    axios.get('http:localhost:3000/posts')
            .then(response=>{
                console.log('data',response.data);
            })
            .catch(error=>{
                console.log('error',error.message);
                
            })


    3.取消请求

    可以使用取消令牌取消请求

    let cancel // 用于保存取消请求的函数
            function getProducts() {
                axios.get('http://localhost:3000/posts',{
                    cancelToken: new axios.CancelToken((c)=>{// c是用于取消当前请求的函数
                        // 保存取消函数, 用于之后可能需要取消当前请求
                        cancel = c
                    })
                }).then(response=>{
                    cancel = null
                    console.log('请求成功了',response.data);
                },error=>{
                    cancel = null
                    console.log('请求失败了',error.message);
                })
           }
    
           function cancelReq(){
               // 取消请求函数
               if(typeof cancel === 'function'){ // 如果typeof是个请求函数,才可以取消
                   cancel('强制取消请求')
               }else{
                   console.log('没有可取消的请求');
                   
               }
           }

    没有请求时点击取消:
    image

    同时点击请求 和 取消请求:
    image
    image

  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/cl1998/p/13118393.html
Copyright © 2011-2022 走看看