每60秒运行一次功能

时间:2020-09-03 02:43:50

标签: javascript electron

我有一个执行数据库备份的功能。我希望此功能每24小时运行一次。我想出的方法如下所示:

  const backupTime = '7:10'
  setInterval(()=>{
    const d = new Date().toString();
    const currentTime = d.substr(16,5); //24hr time
    if(currentTime === backupTime){
      //backup db
    }
  },60000)

这有效,但是如果用户将备份时间设置为07:10,则该函数将在调用setInterval的第二分钟开始运行。即,如果它是在7:09:59进行的,并且超时是60s,那么setInterval将在7:10:59而不是7:10:00运行,这在通知方面并不能提供良好的用户体验用户正在备份等。

反正我可以在指定的时间运行它吗?

1 个答案:

答案 0 :(得分:1)

setInterval或setTimeout在确切的时刻不可靠(特别是如果您计数ms)。 当然,我想您的要求是允许1秒偏移。 因此解决方案可以是以下

  const backupTime = '7:10'
  let justFired = false;
  setInterval(()=>{
    const d = new Date().toString();
    const currentTime = d.substr(16,5); //24hr time
    if(currentTime === backupTime && !justFired){
      justFired = true;
      //backup db
    } else if (currentTime !== backupTime && justFired) {
      justFired = false;
    }
  },1000) // call every second
相关问题