所以..我有一个带有javascript函数的网页,我想执行..
不太了解javascript我通过url栏来解释这个函数..
javascript: Myfunct1();
javascript: Myfunct2();
现在我真正需要做的是长时间睡眠,执行第一个函数,稍微休眠一下,然后执行第二个函数,然后永远循环......类似于:
javascript: while(1) { Sleep(20000); Myfunct1(); Sleep(5000); Myfunct2() };
显然没有“睡眠”功能..这是我的问题..看了各种关于'setTimeout;的帖子后,我尝试了但是一直无法做对..想知道是否有人会采取pitty和一个可怜的javascript simpleton并告诉我这样做的方法?
答案 0 :(得分:0)
查看setTimeout()
。这将为您提供所需的延迟。
http://www.w3schools.com/js/js_timing.asp
只需在</body>
代码
<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);
如果这是真正的代码,那么你可以做更多的事情,例如验证参数和/或在没有为任何给定函数提供时指定默认超时。