В определённое время отправлять, каждый день, выполнять какое-то действие

подскажите, пожалуйста, как реализовать, такую задачу. Каждый день, в определённое время, например 13:55, нужно, сделать вызвать какую-то функцию(callback).

Вот мои наработки:

главный метод startIninityMonitoring()

class DateTimer {
  constructor() {
    this.interval = null;
    this.stop = true;
  }

  async startIninityMonitoring(options, callback) {
    this.stop = false;
    let res = await this.start(options, callback);
    if(!this.stop){
      setTimeout(this.startIninityMonitoring(options, callback), 60*1000);
    }
  }

  async start(options, callback) {
    return new Promise((resolve, reject) => {
      this.interval = setInterval(() => {
        let dateNow = new Date();
        let dateNowOptions = {
          hours: dateNow.getHours(),
          minutes: dateNow.getMinutes(),
        };

        if (
          dateNowOptions.hours == options.hours &&
          dateNowOptions.minutes == options.minutes
        ) {
          callback();
          resolve(true);
          clearInterval(this.interval);
        }
      }, 10 * 1000);
    });
  }

  stop() {
    this.stop = true;

  }
}
module.exports = DateTimer;

Ответы (2 шт):

Автор решения: Игорь Чумаченко

Ты ведь понимаешь что это работать будет только если открыт твой сайт?

По теме, Я бы реализовал так. Записывай в localStorage последнюю дату выполнения функции, и сравнивай с той которую ты получаешь сейчас, если дата больше на день или больше и текущее время тебе подходит то выполняешь. Функцию которая проверяет дату и время вызываешь при загрузке приложения и по таймауту.

Но не даю гарантий что это реально правильный подход решения твоей задачи.

→ Ссылка
Автор решения: Vadim

Для ноды давно придуман пакет cron npm(есть аналоги, но я обычно этот использую), вполне просто настраивается и не нужно велосипед изобретать

→ Ссылка