js函数的防抖和节流

一、防抖

        多次请求数据不相同,而只需要执行最后一次

        解决方法==>延时器:

        第一次触发点击事件,先执行clearInterval( time ),此时的time为0,没有需要清除的定时器/延时器。再执行setTimeout时设定了延时器,time存储值为1。

        在延时器设定的时间内快速点击第二次触发点击事件,同样地先执行clearInterval( time ),此时的time为1,清除上一次的延时器,console.log不执行;

        以此类推,直到最后一次触发点击事件时,前面的延时器都被清除了,而最后一次生成的延时器没有被清除,console.log执行。

        

        let time = 0 ;

        $('button').click( function(){

            clearInterval( time );

            // 点击 触发一个 延时器 1秒以后 执行 程序

            time = setTimeout(() => {              

                console.log(111);

            }, 1000);

            console.log(time);

        } )

        

二、节流

         多次请求数据相同,而只需要第一次执行

        解决方法==>设置开关

        定义变量bool并设定原始值为true,页面滚动监听事件第一次执行的时候,bool值为true,先将bool值改为false,ajax请求发送没完成,不会发送下一次的ajax,ajax请求执行完成,bool值改为true,才能继续发送请求。

// 定义 变量 存储默认值

        let bool = true;

        $(window).scroll(function(){

            // 先判断变量储存的数值

            if( bool === true ){

                bool = false ;

            }else{

                return ;

            }

            // 每次滚动 都会多次触发 请求

            $.ajax({

                url:'http://localhost:8888/test/first',

                type:'get',

                success:function(res){

                    console.log(res);

                    // 变量赋值原始值

                    bool = true ;

                }

            })

        })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值