Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:等待/延迟1秒而不执行代码_Javascript_Jquery_Delay_Wait_Seconds - Fatal编程技术网

Javascript jQuery:等待/延迟1秒而不执行代码

Javascript jQuery:等待/延迟1秒而不执行代码,javascript,jquery,delay,wait,seconds,Javascript,Jquery,Delay,Wait,Seconds,我无法在jQuery中使用.delay方法: $.delay(3000); // not working $(queue).delay(3000); // not working 我正在使用while循环等待,直到一个不受控制的更改值大于或等于另一个值,并且我找不到任何方法将执行拖拽X秒。$。延迟用于延迟队列中的动画,而不是停止执行 您不需要使用while循环,而是需要使用setTimeout递归调用每秒执行检查的方法: var check = function(){ if(condi

我无法在jQuery中使用
.delay
方法:

$.delay(3000); // not working
$(queue).delay(3000); // not working

我正在使用while循环等待,直到一个不受控制的更改值大于或等于另一个值,并且我找不到任何方法将执行拖拽X秒。

$。延迟用于延迟队列中的动画,而不是停止执行

您不需要使用while循环,而是需要使用
setTimeout
递归调用每秒执行检查的方法:

var check = function(){
    if(condition){
        // run when condition is met
    }
    else {
        setTimeout(check, 1000); // check again in a second
    }
}

check();

JavaScript
setTimeout
是一个非常好的解决方案:

function funcx()
   {
   // your code here
   // break out here if needed
   setTimeout(funcx, 3000);
   }

funcx();
jQuery中的
delay
函数主要用于延迟jQuery动画队列中的动画。

delay()
不会停止代码流,然后重新运行它。在JavaScript中没有实际的方法可以做到这一点。任何事情都必须使用其他人提到的回调函数,如
setTimeout


jQuery的
delay()
的目的是让动画队列在执行之前等待。例如
$(元素).delay(3000).fadeIn(250)将使元素在3秒后淡入。

jQuery的
延迟
功能用于效果和效果队列,请参见和其中的示例:

$('#foo').slideUp(300).delay(800).fadeIn(400);
如果要观察变量的变化,可以执行以下操作

(function() {
    var observerInterval = setInterval(function() {
        if (/* check for changes here */) {
           clearInterval(observerInterval);
           // do something here
        }
    }, 1000);
})();

Javascript是一种异步编程语言,因此您不能在一段时间内停止执行;[pseudo]停止执行的唯一方法是使用setTimeout(),它不是延迟,而是“延迟函数回调”。

您也可以通过以下方式延迟某些操作:

setTimeout(function (){

  // Something you want delayed.

}, 5000); // How long do you want the delay to be (in milliseconds)? 

只有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>

功能睡眠(毫秒){
var currentTime=new Date().getTime();
而(currentTime+毫秒>=新日期().getTime()){
}
}
函数hello(){
睡眠(5000);
警惕(“你好”);
}
函数hi(){
睡眠(10000);
警报(“Hi”);
}


ES6设置超时

setTimeout(() => {
  console.log("we waited 204586560000 ms to run this code, oh boy wowwoowee!");
}, 204586560000);

编辑:204586560000毫秒是原始问题和此答案之间的大致时间。。。假设我计算正确。

如果您使用的是ES6功能,并且您使用的是异步函数,则可以使用此函数在一定时间内有效地停止代码执行:

const delay = millis => new Promise((resolve, reject) => {
  setTimeout(_ => resolve(), millis)
});
这是您使用它的方式:

await delay(5000);
它将暂停请求的毫秒数,但仅当您处于异步函数中时。示例如下:

const myFunction = async function() {
  // first code block ...

  await delay(5000);

  // some more code, executed 5 seconds after the first code block finishes
}


这段代码对我来说很好。

尝试在回调中使用setTimeout您使用的是什么版本的jquery?这不是delay函数的设计目的,它是为排队的jquery事件(如fade().delay().show())之间使用而设计的。您需要setTimeOut函数。@JoJa:您的主要观点是正确的,但是show(和hide)的无参数形式不使用效果队列。请说明您试图通过延迟实现什么。所有JavaScript都在一个线程上执行,并且将其冻结X秒可能会导致不良的用户体验。我认为,setTimeout就足够了。你的炸弹兄弟,这正是我修复代码所需要的。@Jiemurat和将来的任何人:setTimeout不会中断执行流。尼斯纳的伟大代码在条件变为现实之前获得此信息!如果您不需要中断执行流,只需使用
setTimeout()
。我总是得到“check不是一个函数”,我的check函数有两个参数,但仅供参考,这不会中断执行流,因此如果您需要“停止一切”几秒钟,你需要一些像尼斯纳贴的东西。是的。。。它是对函数的回调,不会阻塞。感谢您的回答,它解决了我的问题。如果频率非常短,并且我们希望此函数能够永远运行,它最终会导致堆栈崩溃吗?setInterval有第二个强制参数,时间(以毫秒为单位;)谢谢@sara.potyskki,修好了。@JulianD。谢谢你的建议。我在谷歌上搜索解决方案时发现了这个问题。这正是我的项目所需要的。在javascript中循环等待是个坏主意!循环运行时,所有javascript功能都将停止。这将产生意想不到的副作用。使用像setTimeout()这样的非阻塞函数要好得多。使用从原始问题到此答案的大致时间非常好。我通过异步函数中类似的方法解决了此问题,只需执行以下操作:
wait setTimeout(=>{},毫秒)然后移到下一行。请提供一些关于答案的信息,以便将来的读者从您的答案中获得更多信息。
function sleep(num) {
    var now = new Date();
    var stop = now.getTime() + num;
    while(true) {
        now = new Date();
        if(now.getTime() > stop) return;
    }
}

sleep(1000);   // 1 second 
alert('here');