Javascript 哪一个是最优化的

Javascript 哪一个是最优化的,javascript,Javascript,我正在使用mousemove事件,由于它每次都可能执行,我想优化它,我考虑以下两种可能性: ok = true; function mousemove(e) { if(ok == true) { ok = false; window.setTimeout(function(){ ok = true; }, 1000/60);//60 FPS //Code here } } 及 那么,使用窗口间隔(或超时)还是使用时间戳更

我正在使用mousemove事件,由于它每次都可能执行,我想优化它,我考虑以下两种可能性:

ok = true;

function mousemove(e)
{
    if(ok == true)
    {
        ok = false;
        window.setTimeout(function(){ ok = true; }, 1000/60);//60 FPS
        //Code here
    }
}

那么,使用窗口间隔(或超时)还是使用时间戳更好呢

(如果你有其他想法,我就接受!)


谢谢大家!

使用间隔意味着具有每秒执行60次的功能,即使没有使用鼠标。 仅在需要时才执行检查鼠标事件回调中是否经过了正确的周期

因此,我放弃了间隔方法(对于超时也一样):

(函数(){
变量时间=+新日期();
addEventListener('mousemove',function(){
如果(时间-(+新日期())<60)返回;
时间=+新日期();
/*这是我的逻辑*/
});
})()

在事件中,我只需更新一个变量(如鼠标位置),在第二个事件中(如requestAnimationFrame),我将读取该变量并重置它。因此,在下一个循环中,我检查它是否有一个有效值并再次计算它(因为用户进一步移动了鼠标),或者它仍然没有设置(因为用户没有进一步移动鼠标)


它们是不同的。@haim770,因为他想在鼠标移动时执行代码,但每秒不超过60次。目标浏览器中的探查器会怎么说?我投票将这个问题作为离题回答,因为OP是在寻求优化,而且是正确的位置。我同意@Rajesh的观点,这个问题不是在问问题,我们甚至不知道他想用这些函数实现什么。是的,我知道,那么超时与时间戳的对比呢?那么,你继续选项2?只要检查偶数出现的时间,如果时间已经过去,不要使用setInterval或setTimeOut。问题是我所有的代码都在mousemove中,没有其他事件:)然后简单地重构你的代码。这是日常业务。
lastTime = +new Date();

function mousemove(e)
{
    if(+new Date() - lastTime > 1/60)//60 FPS
    {
        lastTime = +new Date();
        //Code here
    }
}
(function () {
    var time=+new Date();
    myElement.addEventListener('mousemove', function () {
        if (time- (+new Date()) < 60) return;
        time=+new Date();
        /* Here my logic*/
    });
})()
let currentPosition = null;

function onPaint() {
    if(currentPosition !== null) {
        let paintPosition = currentPosition;
        currentPosition = null;

        // ToDo: update visualization by using paintPosition...
    }

    window.requestAnimationFrame(onPaint);
}

function onMouseMove(e) {
    currentPosition = e.position;        
}

onPaint();