防抖&节流 (代码案例)

一.防抖

防抖策略debounce)是当事件被触发后,延迟 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时

防抖的应用场景如淘宝搜索框,用户在输入框连续搜索一行字的时候可以通过防抖策略,知道用户把搜索内容全部打出才触发执行请求,这样可以有效减少请求的次数,节约请求资源

用户在多次触发某事件的情况下只会执行最后一次

步骤:

         1. 定义一个防抖动的 timer延时器并置空

         2.获取页面中input  DOM元素并绑定回车事件

         3.先清除延时器,确保连续多次触发但只执行最后一次定时器

 示例代码:


    
    
    

效果图:

防抖&节流 (代码案例)_第1张图片

二.节流

节流策略throttle)可以减少一段时间内事件的触发频率

节流的应用场景

① 鼠标连续不断地触发某事件(如点击),只在单位时间内只触发一次;

② 懒加载时要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算的频率,而不必去浪费 CPU 资源;

 效果: 图片跟随鼠标移动

防抖&节流 (代码案例)_第2张图片

步骤:

         1. 定义一个timer节流阀

         2.定义一个延时器

         3.如果节流阀不为空设置了鼠标跟随效果后,(延时器执行完毕后)清空timer节流阀,方便下次开启延时器

         4.判断节流阀是否为空,如果不为空(上次的代码还没执行完)就return等待执行完毕

示例代码:


    
    

你可能感兴趣的:(javascript,开发语言,ecmascript)