JQuery: Wait/Delay 1 секунда без выполнения кода
Я не могу получить метод .delay
, работающий в jQuery:
$.delay(3000); // not working
$(queue).delay(3000); // not working
Я использую цикл while, чтобы ждать, пока неконтролируемое изменяющееся значение больше или равно другому, и я не могу найти способ выполнить hault-выполнение в течение X секунд.
Ответы
Ответ 1
$. delay используется для задержки анимации в очереди, а не для остановки выполнения.
Вместо использования цикла while вам необходимо рекурсивно вызывать метод, который выполняет проверку каждую секунду, используя setTimeout
:
var check = function(){
if(condition){
// run when condition is met
}
else {
setTimeout(check, 1000); // check again in a second
}
}
check();
Ответ 2
Вы также можете просто отложить некоторую операцию следующим образом:
setTimeout(function (){
// Something you want delayed.
}, 5000); // How long do you want the delay to be (in milliseconds)?
Ответ 3
ES6 setTimeout
setTimeout(() => {
console.log("we waited 204586560000 ms to run this code, oh boy wowwoowee!");
}, 204586560000);
Изменение: 204586560000 мс - это приблизительное время между исходным вопросом и этим ответом... при условии, что я рассчитал правильно.
Ответ 4
JavaScript setTimeout
- очень хорошее решение:
function funcx()
{
// your code here
// break out here if needed
setTimeout(funcx, 3000);
}
funcx();
Функция delay
в jQuery в основном используется для задержки анимации в очереди анимации jQuery.
Ответ 5
Функция jQuery delay
предназначена для использования с эффектами и очередями эффектов, см. 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);
})();
Ответ 6
delay()
не останавливает поток кода, а затем повторно запускает его. В JavaScript нет практического способа сделать это. Все должно выполняться с функциями, которые принимают обратные вызовы, такие как setTimeout
, о которых говорили другие.
Цель jQuery delay()
заключается в том, чтобы ожидание очереди анимации перед выполнением. Так, например, $(element).delay(3000).fadeIn(250);
заставит элемент исчезать через 3 секунды.
Ответ 7
Только 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>
Ответ 8
Javascript - это асинхронный язык программирования, поэтому вы не можете остановить выполнение на время; единственный способ, которым вы можете [pseudo] остановить выполнение, - использовать setTimeout(), который не является задержкой, а "отложенным обратным вызовом функции".
Ответ 9
Это так просто:
function delay(seconds) {
var x = 0;
setTimeout(function() {
if(x){
return undefined;
}
x++;
}, seconds * 1000);
}
for(var x = 0; x < 5; x++){
alert("hi");
delay(10);
}