JavaScript setInterval功能:bug还是不是?

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函数中的一个可解决的错误吗?

+2

不可以,这是你自己的代码可修复的错误。从本身由'setInterval()'触发的函数调用'setInterval()'可能不是您想要做的事情。 – 2015-03-02 14:49:09

+0

你想用你的代码完成什么?你在函数声明后设置了一个初始间隔,但是在它里面你再次执行它;这可能是造成混乱时间间隔的原因吗? – 2015-03-02 14:49:53

+0

你不会和'setTimeout'和'setInterval'混淆吗? – axelduch 2015-03-02 14:53:39

您每秒钟致电streetIntervalEvent

每次拨打streetIntervalEvent时,你有10%的几率每5秒致电function(){var richPersonOnStree...

10分钟后,您将每隔5秒调用一次内部函数〜60个间隔。

最终你会有一个无限的数字(除非浏览器会首先崩溃)。


这可能是可以解决的,但我不知道你是什么试图放在首位来实现的。