- 防抖
- 节流
- …
- …
防抖
只响应最后一次操作
怎么理解:事件会在设定的延时时间后执行,如果在时间内重新触发该事件,则重新计时
案例:英雄联盟 -> 回城
应用场景:input输入框输入事件触发
提示:设定的时间内不一定能够执行一次事件,如回城,一直疯狂按回城键,永远无法回城
/**
*
* @param func 要防抖的函数
* @param millisecond 时间间隔
*/
function debounce(func, millisecond) {
let timer = null;
return () => {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
func();
}, millisecond);
}
}
节流
相同的时间内,只执行一次操作
怎么理解:每间隔一定时间,触发一次操作,时间内继续触发,则不会执行
案例:英雄联盟 -> 技能CD (每多少秒才能放一次技能,技能释放后进入cd,无法释放)
应用场景:表单提交,鼠标移动事件等
/**
*
* @param func 节流函数
* @param millisecond 时间间隔
*/
function throttle(func, millisecond) {
let timer = null;
return () => {
if (!timer) {
timer = setTimeout(() => {
func();
timer = null;
}, millisecond);
}
}
}
总结
每天记录一点,从小小菜鸟变小菜鸟!!!
版权声明:本文为King0217原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。