Вы присваиваете видео.duration длительность в этом коде:
video.addEventListener('durationchange', function() { // Check for duration
console.log('Duration change', video.duration); // Successfully logs video duration into console e.g.: 13.012
duration = video.duration; // Set duration variable to video.duration
});
console.log("Duration: ", duration); // Returns back 0
Проблема в том, что console.log("Duration: ", duration);
запускает до duration = video.duration;
, потому что video.addEventListener
не сразузапустить свою функцию.Если вам нужно что-то сделать с длительностью, вы можете запустить ее после назначения длительности, например, так:
video.addEventListener('durationchange', function() { // Check for duration
duration = video.duration; // Set duration variable to video.duration
someOtherFunction();
});
Вы также можете использовать один из других методов асинхронного управления данными: https://stackoverflow.com/a/14220323/6184972