在 if 语句中,我希望间隔自行清除,然后再次调用其自身的对象函数来重新启动间隔。
这样的事可能吗?
我尝试过这种方式,但出现了意想不到的行为。我可以看到日志每 200 毫秒持续记录一次。虽然它应该已经停止,因为间隔已停止并重新启动,并且条件将不再评估为 true。
DateTime.prototype = {
start: function () {
var self = this;
sendAjaxRequest(this.timeUrl, function () {
var previousTime = new Date().getTime();
this.tickIntervalId = setInterval(function tick() {
var currentTime = new Date().getTime();
if ((currentTime - previousTime) < 0) {
console.log('You changed your time backwards. Restarting.');
self.stop(); // <-- stopping itself
self.start(); // <-- call to same method its running from
return;
}
self.dateElement.innerHTML = new Date();
previousTime = currentTime;
return tick;
}(), 200);
});
},
stop: function () {
clearInterval(this.tickIntervalId);
this.tickIntervalId = null;
}
}
最佳答案
我认为 setInterval 调用的范围是错误的。
尝试改变
this.tickIntervalId = setInterval(function tick() {
使用自己
self.tickIntervalId = setInterval(function tick() {
关于javascript - 设置间隔() : How to stop then start itself again?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323476/