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

  • 相关阅读:
    快过年了,博客园里的文章也变少了
    IP格式检查、IP INT 转换
    ip地址与数字相互转换的sql函数 [ZT]
    SQL Server 2005 TSQL的增強功能 [ZT]
    清除某个数据库的所有数据库连接的存储过程 [ZT]
    C# 3.0新特性
    C#中的委托和事件 [ZT]
    C# 各种进制之间相互转换 [ZT]
    升级到Visual Studio 2008的10个技巧[转]
    ASP.NET备份恢复SqlServer数据库 [ZT]
  • 原文地址:https://www.cnblogs.com/cl1998/p/13118393.html
Copyright © 2011-2022 走看看