簡體   English   中英

在ReactJS中安排API調用

[英]Schedule an API call in ReactJS

我有一個基於反應的Web應用程序,它從Jenkins API檢索數據。 在componentDidMount()函數期間,我正在調用第一個啟動API調用流程的API。 然后,我將使用API​​中的數據呈現組件。

Jenkins服務器每天早上7點開始構建每個項目。 因此,我想在每天晚上8點左右從React調用這些API。

我們是否可以安排React調用這些API,並在一天的特定時間內獲取前面提到的更新數據? 或刷新瀏覽器等導致新的API數據? 我是React的新手,所以感謝您提出的建議。

您在componentDidMount()正確使用了API調用。 您可以在mount上使用setTimeout()等待到20:00,然后每24小時使用setInterval()再次觸發該事件。

所以喜歡:

componentDidMount() {
  const currentTime = new Date().getTime();  //current unix timestamp
  const execTime = new Date().setHours(20,0,0,0);  //API call time = today at 20:00
  let timeLeft;
  if(currentTime < execTime) {
    //it's currently earlier than 20:00
    timeLeft = execTime - currTime;
  } else {
    //it's currently later than 20:00, schedule for tomorrow at 20:00
    timeLeft = execTime + 86400000 - currentTime
  }
  setTimeout(function() {
    setInterval(function() {

      //your code

    }, 86400000);  //repeat every 24h
  }, timeLeft);  //wait until 20:00 as calculated above
}

換句話說,它將:

  1. 計算現在和下一個20:00之間的時差。
  2. 使用setTimeout()等到20:00
  3. 設置一個24小時( 即86400000 ms )的觸發器,以重復setInterval()內的代碼。

無論您何時啟動React應用程序,這都將有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM