Javascript暂停循环直到事件
我有一个javascript问题,这是我代码的一部分:Javascript暂停循环直到事件,javascript,loops,for-loop,video,event-listener,Javascript,Loops,For Loop,Video,Event Listener,我有一个javascript问题,这是我代码的一部分: for(var a = 0; a < videos.length; a++) { source.setAttribute('src', videos[a]); video.load(); video.play(); for(var b = 0; b < times[a].length; b++) { video.addEventListener("timeupdate",
for(var a = 0; a < videos.length; a++) {
source.setAttribute('src', videos[a]);
video.load();
video.play();
for(var b = 0; b < times[a].length; b++) {
video.addEventListener("timeupdate", function() {
if (this.currentTime >= times[a][b]) {
this.pause();
var answer = prompt("Please answer the question", "Answer");
}
}, false);
}
}
for(var a=0;a=乘以[a][b]){
这个。暂停();
var answer=提示(“请回答问题”、“回答”);
}
},假);
}
}
在数组视频中
我有到视频的链接,在数组时间中
我有不同时间暂停每个视频的视频
我的目标是启动一个视频,然后在特定时间暂停视频,并在回答问题后恢复,然后在视频结束时启动另一个视频并再次提问。我的for循环可以立即执行所有操作,但它并没有按我所希望的那样工作。我提出了两个解决方案:
我不知道怎么做,所以我请求您的帮助。您应该删除
for
循环,只处理事件。这样做至少可以解决一些问题:
var a = 0;
video.src = videos[a];
video.load();
video.play();
check_time();
//instead of looping through your video, you wait until one is finished
//to play the next one.
video.addEventListener("ended", function(){
a++;
if(a<videos.length){
video.src = videos[a];
check_time();
}
//this will add event listener each time video is changed.
function check_time(){
var b = 0;
video.removeEventListener("timeupdate")
video.addEventListener("timeupdate", function() {
if (this.currentTime >= times[a][b]) {
this.pause();
var answer = prompt("Please answer the question", "Answer");
b++;
}
}, false);
}
var a=0;
video.src=视频[a];
video.load();
video.play();
检查时间();
//你不用循环播放你的视频,而是等到一个视频完成
//去玩下一个。
video.addEventListener(“结束”,函数(){
a++;
如果(a=乘以[a][b]){
这个。暂停();
var answer=提示(“请回答问题”、“回答”);
b++;
}
},假);
}
您是否处理用户暂停视频的情况?用于播放视频的实际时间间隔将与预期值不同。此相关问题可能会有所帮助:运行答案中的示例代码以查看它是否正常工作。虽然看不到所有代码,但为什么要多次循环并为视频元素创建事件处理程序。只需绑定一次,然后简单地检查当前时间是否在列表中,然后执行操作可能会容易得多。此外,此代码可能会在b
的值周围出现问题,因为它与处理程序的范围不隔离,因此所有代码的值都相同。