jQuery: ожидание / задержка 1 секунда без выполнения кода
Я не могу .delay
метод, работающий в jQuery:
$.delay(3000); // not working
$(queue).delay(3000); // not working
Я использую цикл while, чтобы дождаться, пока неконтролируемое изменяющееся значение не будет больше или равно другому, и я не могу найти способ приостановить выполнение в течение X секунд.
8 ответов:
$.задержка используется для задержки анимации в очереди, а не для остановки выполнения.
вместо использования цикла while, вам нужно рекурсивно вызвать метод, который выполняет проверку каждую секунду с помощью
setTimeout
:var check = function(){ if(condition){ // run when condition is met } else { setTimeout(check, 1000); // check again in a second } } check();
вы также можете просто отложить некоторые операции таким образом:
setTimeout(function (){ // Something you want delayed. }, 5000); // How long do you want the delay to be (in milliseconds)?
JavaScript
setTimeout
- это очень хорошее решение:function funcx() { // your code here // break out here if needed setTimeout(funcx, 3000); } funcx();
The
delay
функция в jQuery в основном используется для задержки анимации в очереди анимации jQuery.
в jQuery!--2--> функция предназначена для использования с эффектами и очередей эффект, см.
delay
docs и пример в нем:$('#foo').slideUp(300).delay(800).fadeIn(400);
если вы хотите наблюдать переменную для изменений, вы можете сделать что-то вроде
(function() { var observerInterval = setInterval(function() { if (/* check for changes here */) { clearInterval(observerInterval); // do something here } }, 1000); })();
delay()
не останавливает поток кода, а затем повторно запустить его. В JavaScript нет практического способа сделать это. Все должно быть сделано с функциями, которые принимают вызовы, такие какsetTimeout
которых уже упоминалось.цель jQuery
delay()
это сделать очередь анимации ждать перед выполнением. Так, например,$(element).delay(3000).fadeIn(250);
заставит элемент исчезать через 3 секунды.
только javascript он будет работать без jQuery
<!DOCTYPE html> <html> <head> <script> function sleep(miliseconds) { var currentTime = new Date().getTime(); while (currentTime + miliseconds >= new Date().getTime()) { } } function hello() { sleep(5000); alert('Hello'); } function hi() { sleep(10000); alert('Hi'); } </script> </head> <body> <a href="#" onclick="hello();">Say me hello after 5 seconds </a> <br> <a href="#" onclick="hi();">Say me hi after 10 seconds </a> </body> </html>