繁体   English   中英

在JavaScript中暂停一会儿

[英]Pausing for a split moment in JavaScript

我有以下JavaScript代码:

var cILo=true;

var img1="images/title-2a.png";
var img2="images/title-2b.png";

function loadblinker() {
    for (var i=0,l=Math.floor(Math.random()*10);i<l;++i) {
        cILo=!cILo;
        if (cILo) {
            document.getElementById("lamp").src=img1;
        } else {
            document.getElementById("lamp").src=img2;
        }
        !!!! THIS LINE HERE !!!!
    }
    document.getElementById("lamp").src=img1;
    setTimeout("loadblinker()",Math.floor(Math.random()*10000));
}

我在代码上标记了短语“ !!!!这条线!!!!”的地方 ,我需要一些方法来暂停执行一秒钟。 完成后,此代码将产生短路光(视频游戏中的光)的外观。 我想知道我应该如何暂停代码,因为似乎没有自然的方法。

我认为更好的方法是通过使用setInterval消除for循环。 然后,您可以清除Math.floor(Math.random()*10)迭代之后的时间间隔。 我不建议仅通过循环旋转来阻止执行。 大多数浏览器在执行此操作时都会感到恐惧。

通常,这是通过在JavaScript中调用setTimeout并在延迟后将要执行的代码传递给它来处理的。 换句话说,不是在函数中暂停,而是将函数分为两部分:一部分要在延迟之前执行,而另一部分要在延迟之后执行。

您已经通过setTimeout递归调用了函数,因此您已经差不多了。 查看是否可以重组代码,以便摆脱for循环,而传递最大的迭代次数。 在每次通话时减少该计数器。 如果递减后您的计数器大于零,请调用setTimeout再次调用该函数。

function pause(ms) 
{
    var d = new Date();
    var c = null;

    do
    {
        c= new Date();
    } 
    while(c - d < ms);
}

使用pause(1000); 暂停一秒钟

本网站提供

浏览器中的Javascript无法执行同步暂停。 您可以按照muntoo的建议修改自己的方式,但是不应该这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM