[英]javascript loop going mental
我的php页面上有一个简单的javascript循环,每秒仅将1添加到一个值。 好了,循环每秒运行一次,并增加该值。
var test = 0;
function go() {
test = test + 1;
setTimeout(go, 1000);
}
go();
这很好。
问题是,运行它的PHP页面实际上位于div标签中,该标签每10秒刷新一次。 10秒后,计数开始增加,每秒增加2,然后增加3,然后增加4,依此类推。
我该如何阻止呢?
鉴于问题似乎是您的函数正在运行的多个实例,页面的每次刷新/更新时都会增加,因此建议您对函数进行健全性检查:
var test = 0;
var running = running || false;
function go() {
if (running) {
// if an instance of go() is already running, the function quits
return false;
}
else {
running = true; // as the test variable survives I assume this will, too
test = test + 1;
setTimeout(go, 1000);
}
}
go();
由于每次页面更新时都可能会覆盖test
,因此建议您确保分配不会覆盖现有计数:
var test = test || 0;
var running = running || false;
function go() {
if (running) {
// if an instance of go() is already running, the function quits
return false;
}
else {
var running = true; // as the test variable survives I assume this will, too
test = test + 1;
setTimeout(go, 1000);
}
}
go();
请记住,您可以简单地使用test
变量的存在来确定该函数当前是否正在运行,但是由于我不知道您是否会将其用于其他目的,因此我选择创建另一个变量为此目的(应包含true
或false
布尔值)。
更改: go()
到if(!test){ go() }
您还必须修补test
变量。 所以var test = test || 0;
var test = test || 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.