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”。