Я работаю над виджетом панели инструментов на основе календаря, который я хочу автоматически обновлять в начале нового дня. Тем не менее, я не могу заставить его действительно обновляться. Кажется, он отлично работает в браузере. Я также пытался вручную ввести задержку setTimeout на что-то гораздо более короткое (например, 1 или 2 минуты), и это, похоже, работает.
Это код, который у меня есть:
function Calendar() {
var _self = this;
this.daytimer = null;
this.daytimerAction = function() {
_self.updateCurrentDate();
}
this.resetDaytimer();
}
Calendar.prototype.resetDaytimer = function() {
var today = new Date(),
tomorrow = new Date();
if (this.daytimer) {
clearTimeout(this.daytimer);
this.daytimer = null;
}
tomorrow.setDate(today.getDate() + 1);
tomorrow.setHours(0);
tomorrow.setMinutes(0);
tomorrow.setSeconds(1);
this.daytimer = setTimeout(this.daytimerAction, tomorrow.getTime() - today.getTime());
};
Calendar.prototype.updateCurrentDate = function() {
// Run code to update the day display
this.resetDaytimer();
};
есть идеи? Единственное, о чем я могу думать, это то, что панель управления приостанавливает/отменяет setTimeout, когда панель управления не работает. Может быть, есть способ сбросить тайм-аут при повторной активации панели?