我有这段代码开始调用间隔:
// Start timer function
var startTimer = function () {
// Apply our first image
applyImage(element);
console.log('about to start the timer');
console.log(timer);
// If our timer is not running
if (!timer) {
console.log('start timer');
// Start our timer
timer = $interval(changeImage, 10000);
}
};
我在做的一件事就是检查计时器是否为null / undefined。 但是我注意到当我调用我的停止功能时:
var stopTimer = function () {
console.log('about to stop the timer')
// If we have started our timer
if (timer) {
console.log('stop timer');
// Stop it
$interval.cancel(timer);
}
};
它实际上并未清除计时器,只是将状态设置为“取消”'。 在我调用 $ interval.cancel(计时器)后,我可以将计时器设置为空吗? 或者我应该将我的开始功能更改为:
// Start timer function
var startTimer = function () {
// Apply our first image
applyImage(element);
console.log('about to start the timer');
console.log(timer);
// If our timer is not running
if (!timer || timer.$$state.status === 2) {
console.log('start timer');
// Start our timer
timer = $interval(changeImage, 10000);
}
};
答案 0 :(得分:0)
您可以在此时将计时器设置为null ...或者您可以删除它。取消调用无法从调用者的作用域中删除var - JavaScript没有执行此操作的机制。将其标记为已取消也可让您控制接下来发生的事情,例如,如果您运行了六个间隔并且由于某种原因需要跟踪其状态。
请注意,删除和设置为null之间存在差异。 Null在JavaScript中是一个完全合法的值,因此将var设置为null实际上并不表示它“不再需要”某些人期望的方式。引用的对象可以被释放(如果这是对它的最后一次引用),但var本身仍然存在于范围内。