例如,我设置的间隔就像
timer = setInterval(fncName, 1000);
Run Code Online (Sandbox Code Playgroud)
如果我去做
clearInterval(timer);
Run Code Online (Sandbox Code Playgroud)
它确实清除了间隔,但有没有办法检查它是否清除了间隔?我已经尝试在它有间隔的时候得到它的值,当它没有时,但它们似乎都只是数字.
Cas*_*Chu 112
没有直接的方法来做你想要的.相反,timer每次调用时都可以设置为false clearInterval:
// Start timer
var timer = setInterval(fncName, 1000);
// End timer
clearInterval(timer);
timer = false;
Run Code Online (Sandbox Code Playgroud)
现在,timer要么是假的,要么在给定时间有值,所以你可以简单地检查一下
if (timer)
...
Run Code Online (Sandbox Code Playgroud)
如果要将其封装在类中:
function Interval(fn, time) {
var timer = false;
this.start = function () {
if (!this.isRunning())
timer = setInterval(fn, time);
};
this.stop = function () {
clearInterval(timer);
timer = false;
};
this.isRunning = function () {
return timer !== false;
};
}
var i = new Interval(fncName, 1000);
i.start();
if (i.isRunning())
// ...
i.stop();
Run Code Online (Sandbox Code Playgroud)
来自setTimeout和的返回值setInterval是完全不透明的值.你无法从中得出任何意义; 他们唯一的用途就是回到clearTimeout和clearInterval.
没有功能可以测试一个值是否对应于活动超时/间隔,对不起!如果你想要一个可以检查其状态的计时器,你必须创建自己的包装函数,记住设置/清除状态.