В определённое время отправлять, каждый день, выполнять какое-то действие
подскажите, пожалуйста, как реализовать, такую задачу. Каждый день, в определённое время, например 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 последнюю дату выполнения функции, и сравнивай с той которую ты получаешь сейчас, если дата больше на день или больше и текущее время тебе подходит то выполняешь. Функцию которая проверяет дату и время вызываешь при загрузке приложения и по таймауту.
Но не даю гарантий что это реально правильный подход решения твоей задачи.
Для ноды давно придуман пакет cron npm(есть аналоги, но я обычно этот использую), вполне просто настраивается и не нужно велосипед изобретать