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在单个线程中运行,所有事件都将添加到队列中,并在当前代码执行完后执行。