Não consigo obter o .delay
método funcionando no jQuery:
$.delay(3000); // not working
$(queue).delay(3000); // not working
Estou usando um loop while para esperar até que um valor alterado descontrolado seja maior ou igual a outro e não consigo encontrar nenhuma maneira de interromper a execução por X segundos.
Respostas:
$ .delay é usado para atrasar animações em uma fila, não para interromper a execução.
Em vez de usar um loop while, você precisa chamar recursivamente um método que executa a verificação a cada segundo usando
setTimeout
:fonte
setTimeout()
.Você também pode atrasar algumas operações desta maneira:
fonte
ES6 setTimeout
Edit: 204586560000 ms é o tempo aproximado entre a pergunta original e esta resposta ... assumindo que calculei corretamente.
fonte
A
delay
função do jQuery deve ser usada com efeitos e filas de efeitos; consulte osdelay
documentos e o exemplo:Se você quiser observar uma variável para alterações, poderá fazer algo como
fonte
JavaScript
setTimeout
é uma solução muito boa:A
delay
função no jQuery é usada principalmente para atrasar animações em uma fila de animação do jQuery.fonte
delay()
não interrompe o fluxo do código e o executa novamente. Não há maneira prática de fazer isso em JavaScript. Tudo precisa ser feito com funções que recebam retornos de chamada, como ossetTimeout
que outros mencionaram.O objetivo do jQuery
delay()
é fazer com que uma fila de animação aguarde antes de executar. Assim, por exemplo$(element).delay(3000).fadeIn(250);
, o elemento desaparecerá após 3 segundos.fonte
Somente javascript Funcionará sem jQuery
fonte
Javascript é uma linguagem de programação assíncrona, portanto você não pode parar a execução por um tempo; a única maneira de [pseudo] parar uma execução é usar setTimeout () que não é um atraso, mas um "retorno de chamada de função atrasada".
fonte
Se você estiver usando os recursos do ES6 e estiver em uma função assíncrona, poderá interromper efetivamente a execução do código por um certo tempo com esta função:
É assim que você o usa:
Ele será interrompido pela quantidade solicitada de milissegundos, mas apenas se você estiver em uma função assíncrona . Exemplo abaixo:
fonte