有人可以帮我解决一个小的JavaScript setTimeout问题吗?

时间:2011-09-07 15:19:31

标签: javascript javascript-events

我想减少事件执行时间的数量 所以我写了这样的话:

var slow=function(method,context){
    method.id&&clearTimeout(method.id)
    method.id = setTimeout(function(){
        method.apply(context,arguments)
    }, 500)
}

window.onload=function(){
    function print(){ console.log("thanks a lot") }
    document.body.addEventListener("mousemove",function(){
        slow(print)
    }, false)
}

如果我身体移动得太快, print 功能将不会立即执行,但它似乎不起作用 有人可以帮忙吗?非常感谢!

2 个答案:

答案 0 :(得分:0)

初看起来,你还没有在慢速

的调用中提供了context参数

答案 1 :(得分:0)

我建议使用Ben Alman的油门/去抖动插件。它根本不需要jQuery。如果页面上没有jQuery,它只会将自己添加到Cowboy命名空间。

https://github.com/cowboy/jquery-throttle-debounce/blob/master/jquery.ba-throttle-debounce.js

否则,你至少可以从这里的代码中了解他是如何做到这一点的。