debounce and throtlle

2023-11-05 08:15
文章标签 debounce throtlle

本文主要是介绍debounce and throtlle,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

debounce

      // 核心:单位时间内触发>1 则只执行最后一次。//excutioner 可以认为是执行器。执行器存在则清空,再赋值新的执行器。function debounce(fn, delay = 500) {let excutioner = null;return function () {let context = this;let args = arguments;if (excutioner) {clearTimeout(excutioner);}excutioner = setTimeout(() => {fn.apply(context, args);}, delay);console.log("excutioner", excutioner);};}const clickFun = params => {console.log("this is click Fun", params);};const butt = document.getElementById("clickBut");//传参的2种方式butt.addEventListener("click",debounce(() => clickFun(100), 1000));// butt.addEventListener("click", debounce(clickFun, 1000).bind(this, 100));

throtlle

// 单位时间内触发>1次 只执行第一次function throttle(fn, delay = 1000) {let excutioner = null;return function () {const context = this;const args = arguments;if (!excutioner) {excutioner = setTimeout(() => {fn.apply(context, args);excutioner = null;}, deplay);}};}const butt2 = document.getElementById("clickBut2");//传参butt.addEventListener("click",throttle(() => clickFun(100), 1000));

注: //在 JavaScript 中,arguments 是一个类数组对象,它表示传递给一个函数的参数集合。通过使用 arguments
对象,你可以在函数内部访问到传递给该函数的所有参数,即使你在函数声明中没有明确指定这些参数。

这篇关于debounce and throtlle的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348555

相关文章

Vue3 + TypeScript 实现防抖(Debounce)和节流(Throttle)

在Vue3项目中结合TypeScript使用防抖(Debounce)和节流(Throttle)技术,可以有效提升应用的性能和用户体验,尤其是在处理频繁触发的事件(如滚动、窗口大小调整、输入框内容变化等)时。下面将详细介绍这两种技术的原理、使用方法以及适用场景。 一、防抖(Debounce) 原理: 防抖技术通过延迟函数的执行来减少函数的调用频率。在事件被触发n秒后再执行回调,如果在这

debounce函数

当在扩展一个Angular应用的时候,巨大的数据集导致$digest()循环运行缓慢,处理这个$digest()循环延迟问题的方案是使用debounce函数。提示:debounce函数是指,只要它一直在被调用,它就不会被触发,直到它不再被调用的X毫秒后。   e.g: 1 < input  ng-model = "user.name"  ng-model-options = "{

简述throttle-debounce

throttle-debounce 限制函数的执行频率 GitHub 地址 throttle-debounce 安装 npm install throttle-debounce --save throttle 限制回调函数的执行频率 /*** 节流(限制函数的执行频率)* @param delay 延迟的时间* @param noTrailing 在最后一次调用时是否

【前端面试常见问题】防抖(Debounce)与节流(Throttle)

目录 一、概念阐释         1. 防抖(Debounce)         2. 节流(Throttle) 二、实现方法         防抖函数的实现         节流函数的实现 三、区别与选择 四、面试技巧          在前端开发领域,性能优化是一个永恒的话题,尤其是在处理高频率触发的事件时,如窗口的resize、scroll事件或

手写防抖debounce

手写防抖debounce 应用场景 当需要在事件频繁触发时,只执行最后一次操作,可以使用防抖函数来控制函数的执行频率,比如窗口resize事件和输入框input事件; 这段代码定义了一个名为 debounce 的函数,它接收两个参数:fn(一个需要被防抖处理的函数)和 delay(一个延迟时间,单位是毫秒)。防抖(debounce)技术的主要目的是限制某个函数在一定时间内只执行一次,即使在这

JS 手写 节流throttle 防抖debounce函数

防抖debounce // 手写防抖function debounce(fn, delay = 200) {// timer 在闭包中let timer = null// 返回一个函数return function(...args) {if (timer) {clearTimeout(timer) // 清空上次的值}timer = setTimeout(() => {fn.apply

函数去抖(debounce) 函数节流(throttle)总结

1. 什么是函数去抖 & 函数节流 debounce使用场景throttle使用场景 2. 实现方法&应用 a. 简单实现 debouncethrottle b. 附:Lodash实现 debouncethrottle c. 附:Underscore实现 debouncethrottle 1. 什么是函数去抖 & 函数节流 让某个函数在一定 事件间隔条件(去抖debo

页面js实现防抖(debounce)和节流阀(throttle)本质区别

一、防抖(debounce)和节流阀(throttle)目的实现重复执行同一事件。 二、防抖(debounce)  实现连续触发同一事件 仅且执行最后一次事件   debounce(self => {   console.error('5s内连续触发执行最后一次')   }, 5000)   三、节流阀(throttle) 实现连续触发同一事件 在设定时间内 执行完 第一次事件之后

Flow 和 LiveData 之操作符:throttleFirst、 throttleLast 、throttleLatest、debounce

Flow 和 LiveData 之操作符:throttleFirst、 throttleLast 、throttleLatest、debounce 文章目录 Flow 和 LiveData 之操作符:throttleFirst、 throttleLast 、throttleLatest、debounce前言一、Flow 之操作符扩展1. ThrottleFirst2. ThrottleLa

防抖(debounce)

防抖:单位时间内,频繁触发事件,只执行最后一次 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间         现在有一个小栗子:鼠标在box中移动的时候,触发mouseMove事件,如果不防抖的话,每移动1像素就会调用mouseMove()函数,如果mouseMove()函数中存在大量操作dom等情况,会产生卡顿,这个