JavaScript中的无限循环不会触发浏览器警告
时间:2020-03-05 18:53:31 来源:igfitidea点击:
我正在使用Google地图将一组图像显示为叠加层。显示这些图像应该是一个无休止的循环,但是大多数大多数浏览器都会检测到这一点并显示警告。
有没有办法在JavaScript中进行无限循环,以免浏览器停止或者警告它?
解决方案
回答
尝试使用setInterval或者setTimeout。
这是一个例子:
(show = (o) => setTimeout(() => { console.log(o) show(++o) }, 1000))(1);
.as-console-wrapper { max-height: 100% !important; top: 0; }
回答
也许尝试使用一个计时器,该计时器在每次滴答时都检索下一张图像,不幸的是我不知道任何JavaScript,所以我无法提供代码示例
回答
我们应该使用计时器来连续带来新图像,而不是无限循环。检查setTimeout()
函数。需要注意的是,我们应该在一个调用自身的函数中对其进行调用,以使其再次等待。来自w3schools的示例:
var c = 0 var t; function timedCount() { document.getElementById('txt').value = c; c = c + 1; t = setTimeout("timedCount()", 1000); }
<form> <input type="button" value="Start count!" onClick="timedCount()"> <input type="text" id="txt"> </form>
回答
而不是使用无限循环,而是创建一个计时器,它会每隔n秒触发一次,我们将获得"永远运行"方面,而浏览器不会挂起。
回答
function foo() { alert('hi'); setTimeout(foo, 5000); }
然后只需执行" onload"之类的操作即可启动" foo"
回答
以下代码将设置一个间隔,并将图像每秒设置为图像源数组中的下一个图像。
function setImage(){ var Static = arguments.callee; Static.currentImage = (Static.currentImage || 0); var elm = document.getElementById("imageContainer"); elm.src = imageArray[Static.currentImage++]; } imageInterval = setInterval(setImage, 1000);
回答
如果适合情况,我们可以像本网站一样继续加载新图像以响应用户交互(仅向下滚动)。
回答
只是一个正式的答案:
var i = 0; while (i < 1) { do something... if (i < 1) i = 0; else i = fooling_function(i); // must return 0 }
我认为没有浏览器会检测到这种情况。