防抖的目的是确保在指定的时间间隔内,函数只被执行一次,而节流是限制函数在一定时间内被调用的次数
     一、知识点   防抖和节流都是在 JavaScript 中常见的用于优化性能的技术。       防抖:是一种在短时间内多次触发同一事件,只执行最后一次或只在开始时执行的技术。它的目的是减少不必要的事件调用,避免在短时间内频繁执行某个操作。    节流:是一种限制某个函数在一定时间内只能被调用一次的技术。它的目的是控制函数的调用频率,减少不必要的性能消耗。      二、思路分析       防抖的思路:在事件被触发后,延迟一定时间执行回调函数,如果在延迟时间内该事件再次被触发,则重新计时,直到延迟时间内没有再次触发事件,才执行回调函数。    节流的思路:在指定的单位时间内,只允许触发一次函数,如果该单位时间内触发多次函数,只有一次生效。      三、JavaScript 解答        防抖的实现: function antiShake(fn,delay) {    let timer;    return function(...args) {        // 清除定时器        clearTimeout(timer);        // 使用定时器        timer = setTimeout(()=>{            fn.apply(this,args);        },delay)    }}const button = document.getElementById('myButton');// 绑定事件处理程序button.addEventListener('click', antiShake(()=>{    console.log('按钮被点击了')},1000)) 在上述示例中,使用setTimeout实现了防抖功能。在指定的单位时间内,只响应最后一次。     节流的实现 function throttling(fn,delay) {    let flag = true;    return function(...args) {        if(flag) {            flag = false;            setTimeout(()=>{                fn.apply(this,args);                flag = true            },delay)        }    }}const button = document.getElementById('myButton');// 绑定事件处理程序button.addEventListener('click',throttling(()=>{    console.log('按钮被点击了')},1000)) 在上述示例中,使用了一个布尔值flag来控制函数的执行,实现了节流功能。      四、Java 解答   在 Java 中,你可以使用TimeUnit类来实现防抖和节流。        防抖的实现: import java.util.Timer;import java.util.TimerTask;public class Debounce {    private Timer timer;    private Runnable task;        
点赞 2
评论 2
全部评论

相关推荐

09-27 10:54
重庆大学 C++
人已微死:致敬传奇耐测王。
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务