手写防抖函数、手写节流函数

文章目录

  • [1 手写防抖函数](#1 手写防抖函数)
  • [2 手写节流函数](#2 手写节流函数)

1 手写防抖函数

  • 函数防抖是指在事件被触发n秒后再执行回调,如果在这n秒内事件又被触发,则重新计时。
  • 这可以使用在一些点击请求的事件上,避免因为用户的多次点击向后端发送多次请求。
javascript 复制代码
function debounce(fn, await) {
    let timer = null;
    return function() {
        let self = this;
        let args = arguments;
        if (timer) {
            clearTimeout(timer);
            timer = null;
        }
        timer = setTimeout(() => {
            fn.call(self, args);
        }, await);
    }
}

2 手写节流函数

  • 函数节流是指规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
  • 节流可以使用在scroll函数的事件监听上,通过事件节流来降低事件调用的频率。
javascript 复制代码
function throttle(fn, delay) {
    let curTime = Date.now();
    return function() {
        let context = this;
        let args = arguments;
        let nowTime = Date.now();
        if (nowTime - curTime >= delay) {
            curTime = Date.now();
            return fn.apply(context, args);
        }
    }
}
相关推荐
techdashen1 分钟前
Go 1.18+ slice 扩容机制详解
开发语言·后端·golang
Mintopia3 分钟前
🌌 信任是否会成为未来的货币?
前端·人工智能·aigc
fqbqrr4 分钟前
2601C++,模块导出分类
前端·c++
froginwe116 分钟前
R 包:全面解析与高效使用指南
开发语言
倚栏听风雨9 分钟前
vscode 运用 ts 代码需要准备什么
前端
zero.cyx9 分钟前
javaweb(AI)-----后端
java·开发语言
say_fall16 分钟前
泛型编程基石:C++ 模板从入门到熟练
java·开发语言·c++·编辑器·visual studio
韩曙亮17 分钟前
【Web APIs】浏览器本地存储 ① ( window.sessionStorage 本地存储 | window.localStorage 本地存储 )
服务器·前端·javascript·本地存储·localstorage·sessionstorage·web apis
吃杠碰小鸡19 分钟前
前端Mac快速搭建开发环境
前端·macos
txinyu的博客22 分钟前
结合游戏场景解析UDP可靠性问题
java·开发语言·c++·网络协议·游戏·udp