我正在编写一个网络应用程序。正在播放多个视频,当视频停止播放时,将捕获结束事件。调用的代码如下:
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 是完全单线程的。每次停止事件被触发时,它都会被放入消息队列
中。有一个事件循环
,它迭代地检查消息队列
中是否有新事件,并执行它们完成
,然后再继续下一个事件。
事件循环类似于这样:
while(queue.waitForMessage()){
queue.processNextMessage();
}
这意味着您不必担心同时发生的事件,并且您的增量将始终按顺序处理。
Here's a handy source如果您想了解有关 JavaScript 并发模型的更多信息。
关于javascript - JavaScript 中的媒体事件是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26400072/