【发布时间】:2015-12-15 16:33:09
【问题描述】:
有没有办法找出是否有活动的计时器?
我有 n 个不同持续时间的计时器,例如:
Timer 1 -> 2-sec
Timer 2 -> 8-sec
..
...
Timer n -> n-sec
我需要知道所有计时器何时结束
HTML
<div id="time-out-1">
Time out 1:<span></span>
</div>
<div id="time-out-2">
Time out 2:<span></span>
</div>
<button>
Are all timers finished ?
</button>
JS
setTimeout(function () {
$("#time-out-1 span").text("Finished !");
},2000);
setTimeout(function () {
$("#time-out-2 span").text("Finished !");
},8000);
$('button').click(function(){
// if all timers are finished
// do something
});
注意:我需要这个特定示例的解决方案,因为在我的项目中有 n 个 js 文件,这些文件可能具有像这个示例一样声明的计时器
【问题讨论】:
-
我不相信可以通过对它的引用来确定计时器是否处于活动状态,因为引用只是一个没有属性的整数。如果您可以提供您希望实现的目标的详细信息,我们或许可以提出替代方案。
-
如果您的超时没有交错/延迟,您是否只需要检查一下是否发生了 最长 超时?在这种情况下,您可以只根据它切换一个布尔值。
-
@Quantastical 可能会给出意想不到的结果ejohn.org/blog/how-javascript-timers-work
-
那么,如果这些计时器是从第三方代码设置的,您将不得不重写
setTimeout()/clearTimeout()方法来跟踪任何正在运行的计时器,恕我直言,您真的不想做任何事情......看起来真的就像一个 XY 问题,但我可能是错的
标签: javascript jquery settimeout