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中暂停片刻_Javascript - Fatal编程技术网

在JavaScript中暂停片刻

在JavaScript中暂停片刻,javascript,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.get

我有以下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));
}
var cILo=true;
var img1=“images/title-2a.png”;
var img2=“images/title-2b.png”;
函数loadblinker(){
对于(var i=0,l=Math.floor(Math.random()*10);i
函数暂停(ms)
{
var d=新日期();
var c=null;
做
{
c=新日期();
} 
c-d
使用
暂停(1000);
暂停1秒

由。

功能暂停(毫秒)提供
{
var d=新日期();
var c=null;
做
{
c=新日期();
} 
c-d
使用
暂停(1000);
暂停1秒


感谢。

我认为更好的方法是使用
setInterval
消除for循环。然后可以在
Math.floor(Math.random()*10)之后清除间隔
iterations。我不建议仅仅通过在循环中旋转来阻止执行。大多数浏览器在这样做时都会崩溃。

我认为更好的方法是使用
setInterval
来消除for循环。然后可以在
Math.floor(Math.random()*10)之后清除间隔
iterations。我不建议仅仅通过循环来阻止执行。大多数浏览器在这样做时会发疯。

浏览器中的Javascript不具备同步暂停的能力。您可以按照建议绕过它,但不应该这样做。

浏览器中的Javascript不具备同步暂停的能力同步暂停。您可以按照建议绕过它,但不应该这样做。

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


您已经通过setTimeout递归调用了您的函数,所以您就快到了。请查看是否可以重新构造代码,以便摆脱for循环,而是传入最大迭代次数。在每次调用时减少该计数器。如果减量后,您的计数器大于零,请调用setTimeout来调用该函数再次暂停。

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


您已经通过setTimeout递归调用了您的函数,所以您就快到了。请查看是否可以重新构造代码,以便摆脱for循环,而是传入最大迭代次数。在每次调用时减少该计数器。如果减量后,您的计数器大于零,请调用setTimeout来调用该函数再次单击。

此操作非常有效,muntoo's没有真正起作用,因为浏览器在执行此操作时冻结,因此图像更改甚至不可见。此操作非常有效,muntoo's没有真正起作用,因为浏览器在执行此操作时冻结,因此图像更改甚至不可见。
function pause(ms) 
{
    var d = new Date();
    var c = null;

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