本文概述
- 1)调整大小事件
- 2)按键事件
但是, 但是我们可以防止它在每毫秒内执行一次, 并强制它每X毫秒仅执行一次, 并执行一次任务。防反跳函数在调用时不会执行, 它们会在可配置的持续时间内等待调用暂停, 然后再执行, 每次新的调用都会重新启动计时器。
为此, 我们将使用反跳功能, 这将有助于我们完成任务, 具体如下:
/*** Execute a function given a delay time* * @param {type} func* @param {type} wait* @param {type} immediate* @returns {Function}*/var debounce = function (func, wait, immediate) {var timeout;
return function() {var context = this, args = arguments;
var later = function() {timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate &
&
!timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
在大多数情况下, 根据用途, 此功能将大大提高性能, 例如:
1)调整大小事件如果每次窗口调整大小时都需要用JavaScript调整许多元素的大小, 这将意味着大量的递归消耗。使用去抖将使调整大小事件仅根据窗口的调整大小运动被触发1次。
$(window).resize(debounce(function(){// the following function will be executed every half secondexecuteMyReallyHeavyTask();
}, 500));
// Milliseconds in which the task should be executed (500 = half second)
2)按键事件如果你自己进行自动完成, 则需要防止每次按下按钮都执行对服务器的调用。使用debounce将使在新闻事件中仅执行1个Ajax调用。
$('#myInput').keyup(debounce(function(){// the following function will be executed every half secondmakeAjaxCall();
}, 500));
// Milliseconds in which the ajax call should be executed (500 = half second)
【什么是去抖动方法以及如何在JavaScript中使用它】防反跳将以一种简短而优雅的方式提高你的持久执行功能的性能。
推荐阅读
- 如何使用CSS在JavaScript控制台上自定义调试
- JS框架与VanillaJS(使用还是不使用框架())
- javascript中变量声明中LET和VAR有什么区别
- 我的软考历程网络规划师
- 软考过后看软考
- 网工在路上--一文弄懂MSTP协议
- 246期门诊集锦专家解析(软考重点难点及应试技巧)
- 走在软考的小路上
- 华为ENSP模拟器安装和使用技巧-超详细