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

文章目录

  • [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);
        }
    }
}
相关推荐
xieliyu.2 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
CryptoPP3 小时前
快速对接东京证券交易所API数据:实战指南与代码示例
开发语言·人工智能·windows·python·信息可视化·区块链
ZC跨境爬虫3 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
fangdengfu1233 小时前
ES分析系统各个服务日志占用量
java·前端·elasticsearch
凌云拓界4 小时前
文件管理:让AI安全操作你的电脑 ——CogitoAgent开发实战(三)
javascript·人工智能·架构·开源·node.js
凌云拓界4 小时前
联网能力:让AI看见更广阔的世界 ——CogitoAgent开发实战(四)
javascript·人工智能·架构·node.js·创业创新
阳区欠4 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain
Jinkxs5 小时前
Java 跨域14-Java 与区块链(Hyperledger)集成
java·开发语言·区块链
JustHappy5 小时前
古法编程秘籍(六):程序到底是怎么跑起来的?从 IO 到中断,一次讲明白
前端·后端·全栈