Не слід просто намагатися призупинити 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 запускає ваш код лише в один потік, під час циклу нічого іншого не може працювати (жоден інший обробник подій не може викликати). Отже, циклічне очікування зміни певної змінної ніколи не працюватиме, оскільки жоден інший код не може працювати для зміни цієї змінної.