时间:2021-05-18
面试的时候我们经常会问别人是理解什么是节流和防抖,严格的可能要求你写出节流和防抖函数,这里我们抛开loadsh工具库手写节流和防抖
1.节流函数throttle
2.防抖debounceTail
2.1)只执行首次
// 防抖 且首次执行// 采用原理:第一操作触发,连续操作时,最后一次操作打开任务开关(并非执行任务),任务将在下一次操作时触发)function debounceStart(fn, delay, ctx) { let immediate = true let movement = null return function() { let args = arguments // 开关打开时,执行任务 if (immediate) { fn.apply(ctx, args) immediate = false } // 清空上一次操作 clearTimeout(movement) // 任务开关打开 movement = setTimeout(function() { immediate = true }, delay) }}2.2)只执行最后一次
// 防抖 尾部执行// 采用原理:连续操作时,上次设置的setTimeout被clear掉function debounceTail(fn, delay, ctx) { let movement = null return function() { let args = arguments // 清空上一次操作 clearTimeout(movement) // delay时间之后,任务执行 movement = setTimeout(function() { fn.apply(ctx, args) }, delay) }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
函数防抖和节流都是对高频动作触发回调函数的一个优化,实现方式上有类似之处。先从使用场景做个区分。防抖使用场景:表单输入框校验提交按钮避免重复提交节流使用场景:s
防抖和节流的区别是防抖即触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。节流即高频事件触发,但在n秒内只会执行一次,所以节流
在面试的时候有面试官问我,懒加载这个插件你有没有想到如何去优化?又间接问我函数节流的问题,嘿嘿,今天就更新下这个插件,顺便应用下函数节流(throttle),先
本文实例讲述了js防抖函数和节流函数使用场景和实现区别。分享给大家供大家参考,具体如下:开发过程中,都遇到过某个事件被频发触发的场景,比如resize,scro
前言上一篇博文我们讲到了节流函数的应用场景,我们知道了节流函数可以用在模糊查询、scroller、onresize等场景;今天这篇我们来讲防抖函数的应用场景::