我有一个Javascript代码,每次按下按钮时都会执行一个函数,但是,我的硬件设置偶尔会发送两次输入(即按两次按钮) - 当发生这种情况时,它们是纯粹的毫秒分开。在50ms的时间内,是否可以限制javascript执行两次?javascript double function execution
0
A
回答
4
是否有可能限制JavaScript在50ms的时间内执行两次函数?
是的,您必须跟踪上次运行该功能的时间。例如:
var lastTime = 0;
function buttonPressed() {
var now = new Date().getTime();
if(now-lastTime > 50) {
// do stuff
}
lastTime = now;
}
+0
+1为您的答案。 – 2013-04-20 14:23:39
0
是的,你可以。 在第一次点击(或按键)时设置一个标志。设置一个计时器清除它。 只有在未设置标志的情况下继续进行按键或点击操作。
var within50ms = false;
function clicked()
{
if(within50ms)
{
//the faulty click
}
else
{
//Go ahead
}
within50ms = true;
var timer = setTimeout(function()
{
within50ms=false;
}, 50);
}
完整的例子(用500ms的延迟一个现实演示):http://jsfiddle.net/nivas/FFLGw/
这就是说,这是你的机器上的硬件问题或者是预期的每台机器上,这个应用程序/页面会使用?
1
对于一个更通用的解决方案,这里是一个包装,使防止“反弹”的任何功能:
var preventBounce = function(fn, ms) {
var _fn = fn;
var _firedAt = false;
var _ms = ms;
return function() {
var now = new Date().getTime();
if(!_firedAt || (_firedAt + _ms) <= now) {
_firedAt = now;
return _fn.apply(this, arguments);
}
}
}
这允许你创建一个新的功能,可防止功能从发射好象叫内ms
毫秒最后一次通话。
例如:
test = preventBounce(alert, 5000);
test('example'); // alerts "example"
test('example'); // no action
// ...wait 5 seconds
test('example'); // alerts "example"
相关问题
- 1. C++ shared_ptr与std :: function或double(* SOME_NAME)(double);
- 2. if function within function breaks javascript
- 3. If and Else If Execution
- 4. JavaScript Double Select
- 5. GMP ..binary execution
- 6. Javascript Window.Onload Function Chaining
- 7. Javascript function scope concepts
- 8. Javascript angular function definition
- 9. Javascript object prototype function
- 10. Javascript function organization
- 11. JavaScript Dropdown Function Refactor
- 12. Not calling javascript function
- 13. Javascript“not a function”
- 14. Javascript Foreach Function Expected
- 15. 未定义模板的隐式实例化std :: __ 1 :: function <int(double,double,double,double)>'
- 16. 流量execution- MySQL的
- 17. Javascript double event firing
- 18. JavaScript表示法:(function(){...})();
- 19. Javascript C#like function expression
- 20. Javascript function like php POST
- 21. Javascript Reduce Function not working
- 22. Javascript Scope in Injected Function
- 23. Chrome Javascript Double Alert Loop?
- 24. 如何在pybind11中将python函数转换为std :: function <double(double *)>?
- 25. Javascript double event firing unwanted
- 26. JavaScript For Loop Double Equal
- 27. Pushy Integration Execution failed for task':app:transformClassesWithJarMergingForDebug'
- 28. Selenium Grid with Ant sequential + parallel execution
- 29. Javascript object/function accesibility inside another
- 30. Javascript“Uncaught TypeError:object is not a function”
你试过睡眠()函数? – MimiEAM 2012-08-09 01:19:18
@MimiEAM这是什么'sleep()'函数? – Pointy 2012-08-09 01:20:04
你确定它的硬件问题? – 2012-08-09 01:21:18