我有以下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)
次迭代后清除间隔。 我不建议通过循环旋转来阻止执行。 当您这样做时,大多数浏览器都会吓坏了。
这是通过调用 setTimeout 在 JavaScript 中处理的,将延迟后要执行的代码传递给它。或者换句话说,不是在函数中暂停,而是将函数一分为二:一部分在延迟之前执行,下一部分在延迟之后执行。
你已经通过 setTimeout 递归调用你的函数,所以你几乎就在那里了。看看你是否可以重组你的代码,以便你摆脱 for 循环,而是传入最大迭代次数。减少每次调用时的计数器。如果在递减后,计数器大于零,请调用 setTimeout 再次调用该函数。
function pause(ms)
{
var d = new Date();
var c = null;
do
{
c= new Date();
}
while(c - d < ms);
}
使用 pause(1000);
暂停 1 秒钟。
由本网站提供。
Javascript没有同步暂停的能力。你可以按照muntoo的建议绕过它,但你不应该这样做。