Я использую API YouTube, здесь мне нужно записать время наблюдения пользователя, поэтому я использую функцию setInterval для записи времени.когда функция воспроизведения видео запускается через каждые 500 мсек, используя setInterval.и когда видео останавливается, я очищаю этот идентификатор (то есть возвращаемое sertInterval), используя clearInterval, но не работает.Функция записи все еще работает.и тем временем я снова запускаю видео, и в этот момент функция записи работает быстрее, чем заданный интервал (500).звоню 4-6 раз в 1 сек. Я делаю что-то не так.пожалуйста, предложите мне.здесь ниже мой код:
function onPlayerStateChange(event){
if(event.data === YT.PlayerState.PLAYING || event.data === YT.PlayerState.UNSTARTED){
if(!timeSpent.length){
for(var i=0, l=parseInt(player.getDuration()); i<l; i++)
timeSpent.push(false);
}
timer = setInterval(recordTime, 500);
}else if(event.data === YT.PlayerState.PAUSED){ // paused or move forward
if(parseInt(event.target.getCurrentTime()) == parseInt(lastSeenPoint)){ // paused
clearInterval(timer);
timer = 0;
}else if(event.target.getCurrentTime() > lastSeenPoint ||
event.target.getCurrentTime() < lastSeenPoint){ // move forward
seekcount = seekcount+1;
}
}else if(event.data === YT.PlayerState.BUFFERING){
clearInterval(timer);
}else if(event.data === YT.PlayerState.ENDED){ // video completed
lastSeenPoint = 0;
setVideoTrackData();
isVideoEnd = true;
clearInterval(timer);
}
}
function recordTime(){
var recordExist = false;
lastSeenPoint = player.getCurrentTime();
if(!isVideoEnd){
setVideoTrackData();
}
timeSpent[ parseInt(player.getCurrentTime()) ] = true;
calculateActualTime();
var currentInterActivity = _.filter(interactivity, function(item){return item.tick == parseInt(player.getCurrentTime()) });
console.log("interactivitytaken : "+isInteractivityTaken);
if(currentInterActivity.length && currentInterActivity[0].tick==parseInt(player.getCurrentTime()) && isInteractivityTaken == false){
player.pauseVideo();
isInteractivityTaken = true;
showInteractivityModal(currentInterActivity);
}else{
isInteractivityTaken = false;
}
}
введите описание изображения здесь