Você não deve apenas tentar pausar 5 segundos em javascript. Não é assim que funciona. Você pode agendar uma função do código para ser executada em 5 segundos a partir de agora, mas é necessário colocar o código que deseja executar posteriormente em uma função e o restante do seu código após essa função continuará sendo executado imediatamente.
Por exemplo:
function stateChange(newState) {
setTimeout(function(){
if(newState == -1){alert('VIDEO HAS STOPPED');}
}, 5000);
}
Mas, se você tiver um código como este:
stateChange(-1);
console.log("Hello");
A console.log()
declaração será executada imediatamente. Ele não irá esperar até que o tempo limite seja acionado na stateChange()
função. Você não pode simplesmente pausar a execução do javascript por um tempo predeterminado.
Em vez disso, qualquer código que você deseja executar atrasos deve estar dentro da setTimeout()
função de retorno de chamada (ou chamado a partir dessa função).
Se você tentou "pausar" fazendo um loop, basicamente "travou" o intérprete Javascript por um período de tempo. Como o Javascript executa seu código em apenas um único encadeamento, quando você faz um loop, nada mais pode ser executado (nenhum outro manipulador de eventos pode ser chamado). Portanto, aguardar repetidamente a alteração de uma variável nunca funcionará porque nenhum outro código pode ser executado para alterar essa variável.