javascript - mousedown 事件可以在循环中间发生吗?

标签 javascript game-loop

我试图弄清楚用户操作触发的事件是如何准确发生的。

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

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/

相关文章:

javascript - 如何在jqgrid的custom_func中显示自定义警告框

javascript - 立即启动 AJAX 请求但在添加元素之前确保页面已加载?

DirectX:游戏循环顺序,先绘制再处理输入?

c++ - 无法在 SDL 2 中创建流畅的动画

javascript - typescript 推断变量类型类

javascript - 获取返回 JSON 的外部 API 时出现问题

javascript - 谷歌地图信息窗口中的 Symfony 动态通配符

javascript - 为什么 setTimeout 游戏循环在 touchstart 事件触发时出现延迟?

python - 用 Python 编写游戏循环的正确方法是什么?

java - 如何在空游戏中计算 FPS?