[英]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.