节流和防抖

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,可以参考以下例子:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      body {
        height: 2000px;
      }
    </style>
  </head>
  <body>
    <script>
      // 防抖
      function debounce(fn, wait) {
        var timeout = null;
        return function () {
          if (timeout !== null) clearTimeout(timeout);
          timeout = setTimeout(fn, wait);
        };
      }
      // 处理函数
      function handle() {
        console.log(Math.random());
      }
      // 滚动事件
      window.addEventListener("scroll", debounce(handle, 1000));
    </script>
  </body>
</html>

当持续触发scroll事件时,事件处理函数handle只在停止滚动1000毫秒之后才会调用一次,也就是说在持续触发scroll事件的过程中,事件处理函数handle一直没有执行。

同学可以自行测试一下。

祝学习愉快~

好帮手慕粉 2020-06-28 17:47:06

同学你好,关于同学的问题回答如下:

1、函数防抖和节流,都是控制事件触发频率的方法。

2、函数防抖,这里的抖动就是执行的意思,而一般的抖动都是持续的,多次的。假设函数持续多次执行,我们希望让它冷静下来再执行。也就是当持续触发事件的时候,函数是完全不执行的,等最后一次触发结束的一段时间之后,再去执行。触发事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。

2、节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。节流就是保证一段时间内只执行一次核心代码。事件触发时,在n秒内只会执行一次,所以节流会稀释函数的执行频率。

如果我的回答帮助了你,欢迎采纳。祝学习愉快~

  • 提问者 慕函数525419 #1
    节流就是课程中举的那个定时器的例子吧,防抖能举一段代码作为例子吗
    2020-06-28 17:52:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师