Приостановите видео API Youtube в нескольких точках

#javascript #html #json #youtube-iframe-api

Вопрос:

Я использую этот код, чтобы остановить видео API YouTube в какой-то момент.

  function onPlayerStateChange(event) {

  var time, rate, remainingTime;
  clearTimeout(stopPlayTimer);
  if (event.data == YT.PlayerState.PLAYING) {
    time = player.getCurrentTime()
    if (time < stopPlayAt) {
      rate = player.getPlaybackRate();
      remainingTime = (stopPlayAt - time) / rate;
      stopPlayTimer = setTimeout(pauseVideo, remainingTime * 1000);
    }

  }
}
 

Я использую приведенную ниже функцию, которая запускается из функции pauseVideo.

 function replay() {
  player.seekTo(startPlayAt, true)
  player.playVideo()
}
 

Данные для этого этого кода получены из

 var data = [{
  startPlayAt: 0,
  stopPlayAt: 10
}]
 

Очевидно, что я использую функции карты и функции паузеВидео.

Проблема начинается, когда я использую несколько данных, подобных этому

 var data = [{
  startPlayAt: 0,
  stopPlayAt: 10,
},
{
  startPlayAt: 10,
  stopPlayAt: 20,
}]
 

Я попытался использовать для цикла, если внутри для цикла в onPlayerStateChange. Но ничего не помогало.
Когда я использую цикл for, он просто запускает все итеративные элементы один за другим и даже не ждет, пока текущее время видео опередит значение stopPlayAt данных, прежде чем выполнять вторую итерацию.

Все функции должны просто использовать данные[0], только когда текущее время видео превышает время остановки в наборе данных, просто используйте другие данные, чтобы остановить видео и запустить видео.

Комментарии:

1. Вы не показываете, как на самом деле передаете данные. Пожалуйста, приведите минимальный воспроизводимый пример со всем используемым вами кодом.