JavaScript setInterval功能:bug还是不是?
问题描述:
这里是我当前的代码:JavaScript setInterval功能:bug还是不是?
的var intervalStreet = 1000;
var richPersonOnStreet = false;
var poorPersonOnStreet = false;
function streetIntervalEvent() {
var peopleRandomChance = Math.random();
document.getElementById("number").innerHTML = peopleRandomChance;
if (peopleRandomChance <= 0.1) {
richPersonOnStreet = true;
document.getElementById("streetText").innerHTML = "A rich man is on the street!";
intervalStreet = 5000;
setInterval(function(){var richPersonOnStreet = false; document.getElementById("streetText").innerHTML = "Nothing is happening on the street...";}, 5000);
intervalStreet = 1000;
}
}
setInterval(streetIntervalEvent, intervalStreet);
所有的代码看起来罚款和花花公子,但在我离开这个程序了一会儿,间隔变得完全搞砸了。尝试离开这个地址http://jsfiddle.net/w0gerao3/ 10分钟...你会明白我的意思。
这是setInterval函数中的一个可解决的错误吗?
答
您每秒钟致电streetIntervalEvent
。
每次拨打streetIntervalEvent
时,你有10%的几率每5秒致电function(){var richPersonOnStree...
。
10分钟后,您将每隔5秒调用一次内部函数〜60个间隔。
最终你会有一个无限的数字(除非浏览器会首先崩溃)。
这可能是可以解决的,但我不知道你是什么试图放在首位来实现的。
不可以,这是你自己的代码可修复的错误。从本身由'setInterval()'触发的函数调用'setInterval()'可能不是您想要做的事情。 – 2015-03-02 14:49:09
你想用你的代码完成什么?你在函数声明后设置了一个初始间隔,但是在它里面你再次执行它;这可能是造成混乱时间间隔的原因吗? – 2015-03-02 14:49:53
你不会和'setTimeout'和'setInterval'混淆吗? – axelduch 2015-03-02 14:53:39