Вы не должны просто пытаться сделать паузу в 5 секунд в JavaScript. Это не работает таким образом. Вы можете запланировать выполнение функции кода через 5 секунд, но вы должны поместить код, который вы хотите запустить позже, в функцию, а остальная часть кода после этой функции продолжит работать немедленно.
Например:
function stateChange(newState) {
setTimeout(function(){
if(newState == -1){alert('VIDEO HAS STOPPED');}
}, 5000);
}
Но если у вас есть такой код:
stateChange(-1);
console.log("Hello");
console.log()
Заявление будет работать сразу. Он не будет ждать, пока не истечет время ожидания в stateChange()
функции. Вы не можете просто приостановить выполнение JavaScript на заранее установленное время.
Вместо этого любой код, который вы хотите запустить с задержками, должен быть внутри setTimeout()
функции обратного вызова (или вызываться из этой функции).
Если вы попытаетесь «сделать паузу» зацикливанием, то вы по существу «повесите» интерпретатор Javascript на некоторое время. Поскольку Javascript запускает ваш код только в одном потоке, когда вы зацикливаетесь, ничто другое не может выполняться (никакие другие обработчики событий не могут быть вызваны). Таким образом, циклическое ожидание изменения какой-либо переменной никогда не будет работать, потому что никакой другой код не может быть запущен для изменения этой переменной.