loadVideo () + setCurrentTime () в одном событии onclick - PullRequest
0 голосов
/ 18 января 2019

Нажав кнопку, я хочу, чтобы встроенный vimeo-плеер:

  • изменить воспроизводимое видео на заданный идентификатор
  • переход к определенному времени
  • воспроизвести видео

Сначала я попробовал: onclick="player.loadVideo(12345678); player.setCurrentTime(5); player.play()."

Это явно не сработало. Я уже узнал, что функция loadVideo() запускает событие, поэтому вторая функция должна запускаться после того, как это событие было перехвачено. Так как мое понимание JavaScript все еще довольно ограничено, я хотел бы узнать, как это будет работать.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

как упомянуто ранее об обещании. Все, что вам нужно, это дождаться завершения методов. Кроме того, чтобы написать и поймать как старый способ, я могу рекомендовать способ асинхронного ожидания, который является более читабельным. Вы можете видеть следующее

const playVideo = async (id, time) => {
   try {
     await player.loadVideo(id);
     await player.setCurrentTime(time);
     await player.play();
   } catch (err) {
     console.log(err);
   } 
}
onclick="playVideo(309565369, 5)"
0 голосов
/ 20 января 2019

Все ваши звонки Обещания . Вам нужно будет дождаться успешного возврата каждого запроса, прежде чем делать следующий. Вот пример для вас

var player = new Vimeo.Player('player', { id:76979871, muted: true });
player.loadVideo(309565369).then(function(id) {
    player.setCurrentTime(30).then(function(seconds) {
        player.play().then(function() {
            console.log('the video was played');
        }).catch(function(error) {
            console.log(error);
        });
    }).catch(function(error) {
        console.log(error);
    });
}).catch(function(error) {
    console.log(error);
});
...