jQuery:等待/延迟1秒而不执行代码
我无法使用jQuery中的.delay
方法:
$.delay(3000); // not working $(queue).delay(3000); // not working
我正在使用一个while循环等待,直到一个不受控制的变化值大于或等于另一个,我找不到任何方式来匆忙执行X秒。
$ .delay用于延迟队列中的animation,而不是暂停执行。
而不是使用while循环,你需要recursion地调用一个方法,每秒使用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
是一个非常好的解决scheme:
function funcx() { // your code here // break out here if needed setTimeout(funcx, 3000); } funcx();
jQuery中的delay
函数主要用于延迟jQueryanimation队列中的animation。
jQuery的delay
函数是用于效果和效果队列,请参阅delay
文档和其中的示例:
$('#foo').slideUp(300).delay(800).fadeIn(400);
如果你想观察一个variables的变化,你可以做类似的事情
(function() { var observerInterval = setInterval(function() { if (/* check for changes here */) { clearInterval(observerInterval); // do something here } }, 1000); })();
delay()
不会暂停代码stream,然后重新运行它。 在JavaScript中没有可行的方法。 一切都必须使用其他人提到的setTimeout
等callback函数来完成。
jQuery的delay()
的目的是使一个animation队列在执行之前等待。 所以例如$(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>
Javascript是一种asynchronous编程语言,所以你不能停止执行一段时间; 您可以[pseudo]停止执行的唯一方法是使用setTimeout(),这不是延迟,而是“延迟的函数callback”。