运行javascript函数,但不允许它重新运行x秒
如何立即运行javascript函数,但不允许该函数在x秒内再次运行 下面的代码确实添加了延迟,但随后会多次触发函数disableKeyboardDateinputTest运行javascript函数,但不允许它重新运行x秒,javascript,Javascript,如何立即运行javascript函数,但不允许该函数在x秒内再次运行 下面的代码确实添加了延迟,但随后会多次触发函数disableKeyboardDateinputTest function disableKeyboardDateinputTimer() { setTimeout(function(){ disableKeyboardDateinputTest(); }, 1000); } disableKeyboardDateinputTest(); window.addEv
function disableKeyboardDateinputTimer() {
setTimeout(function(){
disableKeyboardDateinputTest();
}, 1000);
}
disableKeyboardDateinputTest();
window.addEventListener('resize', disableKeyboardDateinputTimer);
如果你愿意使用Lodash,你可以使用它的助手 创建一个限制函数,该函数最多每等待毫秒调用一次func
防止函数被过度调用通常称为“节流”。lodash和下划线库具有节流功能。您可以这样使用它:
function functionToThrottle() {
//...
console.log('Called');
}
var x = 10; // seconds
var throttledFunction = _.throttle(functionToThrottle, x * 1000);
for (var i = 0; i < 10; i++) {
throttledFunction();
}
你需要考虑你是否想要领先的呼叫第一次呼叫立即发生和/或尾随呼叫如果任何呼叫发生在节流期间,一个呼叫将在该期间结束时发生
这里有一篇关于这一主题的好文章:你尝试了什么?你的代码是什么?@Evans你要找的通常是一个函数的去Bouncing…为了让你开始正确的轨道,我想你的问题可能是resize启动了多次并触发了你的手柄。你能回答这个问题而不需要简单的修改吗链接到外部库…?当然,你可以自己写。但重点是什么?教育也许…?他可以通过查看Lodash的代码来教育自己。是否真的需要为这一特性加载库?