Javascript函数通过url栏延迟

时间:2011-03-14 22:01:37

标签: javascript

所以..我有一个带有javascript函数的网页,我想执行..

不太了解javascript我通过url栏来解释这个函数..

javascript: Myfunct1();
javascript: Myfunct2();

现在我真正需要做的是长时间睡眠,执行第一个函数,稍微休眠一下,然后执行第二个函数,然后永远循环......类似于:

javascript: while(1) { Sleep(20000); Myfunct1(); Sleep(5000); Myfunct2() };

显然没有“睡眠”功能..这是我的问题..看了各种关于'setTimeout;的帖子后,我尝试了但是一直无法做对..想知道是否有人会采取pitty和一个可怜的javascript simpleton并告诉我这样做的方法?

3 个答案:

答案 0 :(得分:0)

查看setTimeout()。这将为您提供所需的延迟。

http://www.w3schools.com/js/js_timing.asp

只需在</body>代码

之前将其添加到您的HTML中
<script type="text/javascript"><!--
    setTimeout(function(){ 
        Myfunct1();
        setTimeout(function(){ 
             Myfunct2();
        },5000);
    },20000);
--></script> 

答案 1 :(得分:0)

您可以将setInterval与setTimeout函数结合使用:

setTimeout('Myfunct1(); setInterval("Myfunct1();", 25000);', 20000);
setTimeout('Myfunct2(); setInterval("Myfunct2();", 25000);', 25000);

这将完成您的示例中的功能,而无需挂起浏览器。基本上,它会在20秒后运行Myfunct1(),并在此之后将其设置为25秒再次运行。 Myfunct2()也是如此,除了它首次在25秒后运行。

答案 2 :(得分:0)

这是一个允许你调用交替函数的函数,在每次调用之间等待指定的时间:

function alt(fn1, tm1, fn2, tm2) {
    var curr, time;
    (function next() {
        curr = (curr === fn1) ? fn2 : fn1;
        time = (time === tm1) ? tm2 : tm1;
        window.setTimeout(function() {
            curr();
            next();
        }, time);
    })();
}

像这样使用:

alt(Myfunct1, 20000,
    Myfunct2, 5000);

这将等待20秒,然后拨打Myfunct1,然后等待5秒并致电Myfunct2,然后等待20秒再次拨打Myfunct1,依此类推。

这是一个通用版本,可以接受任意数量的函数/超时对:

function alt() {
    var args = arguments;
    (function next(i) {
        if (i == args.length) 
            i = 0;
        window.setTimeout(function() {
            args[i]();
            next(i + 2);
        }, args[i + 1]);
    })(0);
}

它使用相同的方式,但可以接受两对以上:

alt(function(){console.log("1")}, 2000,
    function(){console.log("2")}, 1000,
    function(){console.log("3")}, 5000);

如果这是真正的代码,那么你可以做更多的事情,例如验证参数和/或在没有为任何给定函数提供时指定默认超时。