我试图弄清楚用户操作触发的事件是如何准确发生的。
在下面的示例中,两个函数之间发生的事件是否会导致仅执行第二个函数?
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 事件处理是单线程的,这意味着只要代码运行,就不会处理任何事件。
当您退出函数(循环
)并将控制权返回给浏览器时,事件处理可以恢复。
(*) 异常(exception)情况是,如果您在该代码中有一个类似于 alert
的对话框,则在某些浏览器中可能会处理某些事件。
关于javascript - mousedown 事件可以在循环中间发生吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25640912/