#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. Вы не показываете, как на самом деле передаете данные. Пожалуйста, приведите минимальный воспроизводимый пример со всем используемым вами кодом.