7 axios取消请求 防抖

1 取消请求

csdd.gif
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/axios.min.js"></script>
</head>

<body>

    <button class="btn">请求按钮</button>
    <button class="btn_cancel">取消按钮</button>
    <script>
        const btn = document.querySelector('.btn')
        const btn_cancel = document.querySelector('.btn_cancel')

        let cancel = null;

        btn.addEventListener('click', e => {
            axios({
                method: 'get',
                url: 'http://localhost:3000/posts',
                //取消请求配置,c是一个函数
                cancelToken: new axios.CancelToken(c => {
                    cancel = c
                })
            }).then(resp => {
                console.log(resp)
            }).catch(err => {
                console.log(err)
            })

        })

        //取消请求,执行cancel函数即可
        btn_cancel.addEventListener('click', e => {
            cancel();
        })
    </script>
</body>

</html>

2 防抖

放置用户暴力点击,每次都会请求数据;


111.gif
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/axios.min.js"></script>
</head>

<body>

    <button class="btn">请求按钮</button>

    <script>
        const btn = document.querySelector('.btn')
        let cancel = null;

        btn.addEventListener('click', e => {
            //当请求还未完成,canael不为null,若此时快速再次点击,就会取消上次请求
            if (cancel !== null) {
                cancel()
            }
            //取消上次请求之后再次请求数据
            axios({
                method: 'get',
                url: 'http://localhost:3000/posts',
                cancelToken: new axios.CancelToken((c) => {
                    cancel = c
                })
            }).then(resp => {
                console.log(resp)
                cancel = null
            })
        })
    </script>
</body>

</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容