函数节流和防抖

"防抖"

首先,先去解释一下什么叫做防抖, 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。也就是说 用户触发时间过于频繁,只要最后一次请求的操作就叫做防抖。

javascript 复制代码
	// 函数防抖
	//time秒之后调用,如果频繁触发则重新计时
   <input type="text" />
    <script>
      let input = document.querySelector("input");
      input.onkeydown = debounce(function (e) {
        console.log(e.keyCode);
      }, 1000);

      function debounce(callback, time) {
        //定时器变量
        let timeId = null;

        //返回一个函数
        return function (e) {
          if (timeId !== null) {
            clearTimeout(timeId);
          }
          timeId = setTimeout(() => {
            //执行回调
            callback.call(this, e);
            //重置定时器变量
            timeId = null;
          }, time);
        };
      }

节流

限制函数在规定时间内执行的次数

javascript 复制代码
    //函数节流
    //在wait毫秒内最多执行 callback 一次
    function throttle(callback, wait) {
        //定义开始时间
        let start = 0;
        //返回结果是一个函数
        return function (e) {
            //获取当前的时间戳
            let now = Date.now();
            // let new = +new Date()

            //使用现在的时间戳减去上一次的时间戳
            if (now - start >= wait) {
                callback.call(this, e);
                //start:代表上一次执行的时间
                start = now;
            }
        };
    }
相关推荐
丢,捞仔1 天前
uni-app上架应用添加权限提示框
前端·javascript·uni-app
Glink1 天前
从零开始编写自己的AI账单Agent
前端·agent·ai编程
Hilaku1 天前
我是如何用一行 JS 代码,让你的浏览器内存瞬间崩溃的?
前端·javascript·node.js
努力犯错玩AI1 天前
如何在ComfyUI中使用Qwen-Image-Layered GGUF:完整安装和使用指南
前端·人工智能
Lefan1 天前
在浏览器中运行大模型:基于 WebGPU 的本地 LLM 应用深度解析
前端
五仁火烧1 天前
npm run build命令详解
前端·vue.js·npm·node.js
哈__1 天前
React Native 鸿蒙跨平台开发:简易记事本 APP
javascript·react native·react.js
贺今宵1 天前
electron-vue无网络环境,读取本地图片/文件展示在页面vue中protocol
前端·javascript·electron
IT_陈寒1 天前
SpringBoot 3.x实战:5个高效开发技巧让我减少了40%重复代码
前端·人工智能·后端
noodles10241 天前
iOS下怎么就找不到好用的新手引导组件呢?还是得自己动手
前端