zoukankan      html  css  js  c++  java
  • 利用axios的CancelToken函数解决重复发送请求的问题

    前端页面上会有一些交互元素短时间内会被多次点击,如果其中涉及到请求接口,可能会存在重复发送请求的场景。

    当然你也可以简单地缓存一个变量去防止重复点击直至再次被允许,但这会导致一个问题,即我们的请求是以第一次点击时页面的数据为准的。

    有时侯我们可能更想以页面当前的数据为准,这时我们就可以利用axios的这一特性,取消之前发送的过期请求。

    具体代码如下

    <html>
        <body>
            <button onclick="get()">Click</button>
        </body>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        <script>
            const CancelToken = axios.CancelToken;
            let cancel;
            function get() {
                if (cancel) cancel();
                axios.get('https://www.test.com', {
                    cancelToken: new CancelToken(function (c) {
                        cancel = c;
                    })
                });
            }
        </script>
    </html>

    可以看到如果我们重复点击按钮,则之前未到达的axios请求会被取消,这样就避免了重复请求的开销。

  • 相关阅读:
    js获取浏览器和屏幕的各种宽度高度
    闭包
    原型与原型链
    vuex
    微信小程序天使童装答辩
    vue脚手架本地开发跨域请求设置
    mvvm和mvc
    Vue 中 methods,computed, watch 的区别
    keep-alive
    YII2组件之GridView
  • 原文地址:https://www.cnblogs.com/chh1995/p/14751979.html
Copyright © 2011-2022 走看看