调度鼠标移动超时
Scheduling a timeOut on mousemove
我正在阅读Eloquent Javascript中的事件章节,我遇到了以下代码。它应该每隔250毫秒显示一次用户鼠标的坐标。
function displayCoords(event) {
document.body.textContent =
"Mouse at " + event.pageX + ", " + event.pageY;
}
var scheduled = false, lastEvent;
addEventListener("mousemove", function(event) {
lastEvent = event;
if (!scheduled) {
scheduled = true;
setTimeout(function() {
scheduled = false;
displayCoords(lastEvent);
}, 250);
}
});
我不明白调度是如何工作的。我明白,如果你设置一个timeOut
,处理程序将在设置的时间段后运行,但我不明白为什么在这个例子中存在一个计划变量和一个条件语句来检查它的布尔值。
如果没有变量和if语句,程序将不能按预期工作,它将打印坐标而不会有任何延迟。这背后的逻辑是什么?
scheduled
标志的目的是防止在每个mousemove
事件调用上创建定时器。只有在当前的setTimeout
完成后,并且标志为false,才会创建一个新的setTimeout
。
如果没有标志,对displayCoords
的第一次调用将在250ms之后进行,但是对displayCoords
的后续调用将一个接一个地触发,因为每个mousemove
都会产生一个计时器,而不会等待前一个结束。
相关文章:
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- FabricJs-限制主对象内添加对象的移动区域
- 如何从画布上的某个移动事件中获取X和Y
- 触摸移动时切换到新元素
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 停止jQuery UI滑块移动超过给定值
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- JQuery移动动态分区页面
- XMLHttpRequest在移动设备上的chrome上不起作用
- 如何使bxslider仅在移动视图中处于活动状态
- css停止图像在滚动中移动
- jquery移动对齐按钮取决于内容大小
- PhoneGap jquery移动超时(从不点击)
- 调度鼠标移动超时
- 移动浏览器的Javascript/PHP页面超时
- 创建带有超时的自动javascript队列来移动项目