是JavaScript中的原子媒体事件
Are media events atomic in JavaScript?
我正在编写一个web应用程序。正在播放多个视频,当视频停止播放时,将捕获结束的事件。被调用的代码如下:
var nextVideoSrc = getNextSrc();
if(nextVideoSrc === null) {
setVideoSrc(video, videoSrcs[index]);
index = (index + 1) % videoSrcs.length;
} else
setVideoSrc(video, videoSrcs[index]);
基本上,它会寻找一个新的视频url,当找不到视频url时,它会从一个池(url数组)中获取一个视频(url)。正如我所说,不止一个视频同时播放。所以我的问题是:当两个视频同时抛出结束的事件时,这些函数是原子函数吗?因为当情况并非如此时,递增的同一索引可能会被使用两次。例如,第一个视频使用videoSrcs[index]
,第二个视频中的结束事件在两者之间运行并使用相同的索引。
JavaScript完全是单线程的。每次触发停止事件时,都会将其置于message queue
上。有一个event loop
,它迭代地检查message queue
中的新事件,并在进入下一个事件之前执行它们to completion
。
事件循环类似于以下内容:
while(queue.waitForMessage()){
queue.processNextMessage();
}
这意味着您不必担心事件同时发生,并且您的增量将始终按顺序处理。
如果您想了解更多关于JavaScript并发模型的信息,这里有一个方便的来源。
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 如何在网站上的嵌入式黑莓媒体播放器上跟踪播放和暂停事件
- 如何在音频元素上使用React媒体合成事件监听器
- Google Analytics应用脚本获取包含特定字词的所有媒体事件标签
- 为什么其中一个侦听器适用于媒体 API 事件,而另一个则不适用于媒体 API 事件
- 观察聚合物上的“结束”媒体事件
- 是JavaScript中的原子媒体事件
- 带有事件侦听器的JavaScript媒体查询
- 媒体源加载失败时没有错误事件
- 如何在与JavaScript事件对齐的CSS媒体查询中使用em
- 如何区分两个“onpause”?事件-由点击“暂停”按钮引起,并由到达媒体片段的结束引起