簡體   English   中英

使用moment.js檢查當前日期不會在新的一天更新

[英]Checking the current day with moment.js does not update on new day

在Node應用程序中,我有一個每30秒運行一次的功能。

它使用moment().day()打印到控制台。 我讓它運行一整夜,並期望它注意到現在是5而不是4表示現在是星期五而不是星期四。 今天早上我檢查時,它繼續打印4 為什么會這樣呢?

這是一個jsfiddle https://jsfiddle.net/9ya2auzy/2/

function checkTheDay(){
    setTimeout(function(){
    document.getElementById("out").innerHTML = moment().day(); 
    checkTheDay();
  }, 2000);
}

checkTheDay();

它將每2秒輸出一天。 如果該頁面保持打開狀態,則應整夜運行,然后打印下一個數字6 (在撰寫本文時),而不是當前輸出5 (在撰寫本文時)。

您每兩秒鍾checkTheDay一次進入checkTheDay函數。 在足夠長的時間內,您將耗盡整個調用堆棧。

使用setInterval而不是setTimeout ,則無需遞歸。

function checkTheDay(){
    setInterval(function(){
    document.getElementById("out").innerHTML = moment().day(); 
  }, 2000);
}

checkTheDay();

通過使用Chrome調試器,設置斷點並查看調用堆棧,您可以看到堆棧在原始小提琴中增長的效果(在以下屏幕截圖的右上方)。

第一次迭代:

第一次迭代

第二次迭代:

第二次迭代

第三次迭代:

第三次迭代

如您所見,調用堆棧在增長。 如果不加以檢查,它將失去控制,直到變得無響應或引發錯誤。

暫無
暫無

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

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