js實現每日定時任務


 

1. 原文鏈接:js定時器每天固定時間執行任務

首先,定義一個方法,在方法內接收四個參數,一個參數是接收間隔的天數,第二個參數是接收具體某個時間點,第三個參數是決定是否在啟動服務時立即執行一次,第四個參數是一個執行的方法,即要定時執行的邏輯。當然,這前三個參數將定義在一個對象中,實際傳入一個對象和一個函數作為參數就可以,這樣整個對象可以作為配置參數。

func參數是要執行的方法。

如果需要多個時間點可以調用多次。

timeoutFunc (config, func) {
  config.runNow && func()
  const nowTime = new Date().getTime()
  const timePoints = config.time.split(':').map(i => parseInt(i))
  let recent = new Date().setHours(...timePoints)
  recent >= nowTime || (recent += 24 * 3600000)
  setTimeout(() => {
    func()
    setInterval(func, config.interval * 3600000)
  }, recent - nowTime)
}
config
= {//參數的說明 interval: 1, //間隔天數,間隔為整數 runNow: false, //是否立即運行 time: "14:00:00" //執行的時間點 時在0~23之間 }

 

2. 原文鏈接:JS 指定每天固定時間執行

window.setInterval(function(){
  var refreshHours = new Date().getHours();
  var refreshMin = new Date().getMinutes();
  var refreshSec = new Date().getSeconds();
  if(refreshHours=='0' && refreshMin=='0' && refreshSec=='0'){
    // 指定每天凌晨做的事情
  }
}, 1000);

 

3. 原文鏈接:JS定時器使用,定時定點,固定時刻,循環執行詳解 

var date = new Date();//現在時刻
var dateIntegralPoint = new Date();//用戶登錄時刻的下一個整點,也可以設置成某一個固定時刻
dateIntegralPoint.setHours(date.getHours()+1);//小時數增加1
dateIntegralPoint.setMinutes(0);
dateIntegralPoint.setSeconds(0);
setTimeout("nextIntegralPointAfterLogin();",dateIntegralPoint-date);//用戶登錄后的下一個整點執行。

function nextIntegralPointAfterLogin(){
  IntegralPointExecute();//在整點執行的函數,在每個整點都調用該函數
  setInterval("IntegralPointExecute();",60*60*1000);//一個小時執行一次,那么下一個整點,下下一個整點都會執行
}

【推薦】:js技巧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM