javascript循环进入精神状态
javascript loop going mental
我的php页面上有一个简单的javascript循环,它每秒只给一个值加1。循环每秒钟运行一次,并递增值。
var test = 0;
function go() {
test = test + 1;
setTimeout(go, 1000);
}
go();
这很好用。
问题是,它运行的PHP页面实际上位于每10秒刷新一次的div标记内。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;
相关文章:
- 具有闭合功能的 For 循环保存状态
- AngularJS$带$timeout的有状态过滤器陷入循环
- React-Redux:当连接到处于状态的数组时无限循环
- Javascript 循环遍历 Page 元素以更改状态
- 仅在选项卡处于活动状态时运行内容脚本循环
- 如何在循环中测试就绪状态和状态以避免 else 分支
- 在循环中调用 setState 仅更新状态 1 次
- 试图让我的幻灯片插件无限循环(通过回到第一个状态)
- 节点 JS:请求循环,直到状态代码 200
- 将状态与来自循环反应的对象合并
- javascript循环进入精神状态
- RxJs:如何根据可观察的状态进行循环
- 在javascript中的打开/关闭状态之间循环
- 在UI路由器中调用子状态时触发了无限循环
- 使用React中的循环从JSON数组中获取数据并根据数据设置状态
- 保持不同的变量's在循环中的多个匿名异步函数中的状态
- 如何通过javascript工作程序显示循环进程状态
- 正在寻找一个可用于在3个状态之间循环的JavaScript开关控件
- 简单的记忆游戏;t更新其状态.糟糕的游戏循环
- Javascript状态循环