有人可以帮助我一个小的JavaScript setTimeout问题

Can someone help me with a small JavaScript setTimeout problem?

本文关键字:一个 JavaScript 问题 setTimeout 帮助      更新时间:2023-09-26

我想减少事件执行时间的数字所以我写了这样的东西:

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函数不会立即执行,但它似乎不工作。有人能帮忙吗?

乍一看,您没有在调用slow

时提供context参数。

我建议使用Ben Alman的throttle/debounce插件。它实际上根本不需要jQuery。如果页面上没有jQuery,它会将自己添加到Cowboy名称空间中。

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

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