Javascript 鼠标下沉事件能发生在循环的中间吗?

Javascript 鼠标下沉事件能发生在循环的中间吗?,javascript,game-loop,Javascript,Game Loop,我试图弄清楚由用户操作触发的事件到底是如何发生的 在下面的示例中,事件是否会发生在两个函数之间,导致仅执行第二个函数 var mouseDown = false; element.addEventListener('mousedown', function(evt) { mouseDown = true; }, false); function loop() { doSomething(); // Can mouseDown be set to true here?

我试图弄清楚由用户操作触发的事件到底是如何发生的

在下面的示例中,事件是否会发生在两个函数之间,导致仅执行第二个函数

var mouseDown = false;

element.addEventListener('mousedown', function(evt) {
    mouseDown = true;
}, false);

function loop() {
    doSomething();

    // Can mouseDown be set to true here?

    doSomethingElse();

    mouseDown = false;

    requestAnimationFrame(loop);
}

function doSomething() {
    if (mouseDown) {
        // Do something
    }
}

function doSomethingElse() {
    if (mouseDown) {
        // Do something else
    }
}
这种情况会发生吗?或者该事件会推迟到循环轮次之间吗?

不,这永远不会发生

Javascript事件处理是单线程的,这意味着只要代码在运行,就不会处理任何事件

退出函数(
循环
)并将控件返回到浏览器时,事件处理可以恢复



(*)例外情况是,如果代码中有一个类似于
警报的对话框,那么在某些浏览器中可能会处理某些事件。

Javascript在单个线程中运行,所有事件都将添加到队列中,并在当前代码执行完后执行。