我正在使用setInterval记录时间。并且我使用clearInterval清除间隔但无法正常工作

时间:2018-10-22 13:26:28

标签: youtube-api clearinterval

我正在使用Youtube api,在这里我需要记录用户观看时间,因此我使用setInterval函数来调整时间。使用setInterval每隔500毫秒运行一次视频播放记录功能时。当视频暂停时,我使用clearInterval清除了该ID(即由sertInterval返回),但无法正常工作。记录功能仍在运行。在此同时,我再次开始播放视频,录制功能的运行速度比给定的时间间隔(500)快。 1秒内打电话4-6次我是做错什么了吗?请建议我。下面是我的代码:

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;
    }
}

enter image description here

0 个答案:

没有答案
相关问题