2012-08-27 71 views
4

setInterval方法對於更長時間可靠嗎? 我有一個要求,每天和/或每週一次觸發功能。 所以我使用setInterval(myFunc, 86400000) //一天。類似計算一週的毫秒數 這是一個很好的方法。或者有沒有其他技術可以使用。setInterval更長時間

+7

網頁是否真的可行? –

+0

如果您關閉了頁面,刷新了或導航到其他地方,計時器將從頭開始。這聽起來不像人們真正想做的事情。 – Esailija

+1

很可能你會想要做任何你在後端而不是JS中做的事情。 – Thor84no

回答

1

我認爲一個好的辦法是,

當網頁打開第一家門店日期到本地存儲, 當其開常檢查本地存儲的每一分鐘 的日期,然後驗證它,並採取行動。

setIterval聽起來像在這裏做一個非常糟糕的方式...

在啓動時得到的數據,

在組使用localStorage.setItem("date", datevariblename);

負載或每次您保存日期間隔使用 localStorage.getItem("date")以獲取日期值

然後在當前日期和保存日期之間進行每個比較所需的操作

+0

似乎符合我的要求。存儲初始時間戳,然後根據該時間戳進行驗證可能適用於我。感謝您的建議。 – Srikanth

+0

它會使用更少的資源,更可靠,你需要一個工作的例子嗎? – LmC

+0

那會很棒!你能指點我的例子嗎? – Srikanth

0

setTimeout相當精確的更長時間。我前段時間有要求,所以我在瀏覽器上做了一些測試。即使您的超時時間長達24小時,回調也會被精確觸發(差異在毫秒)。

setTimeout(或更確切地說,執行)不使用「倒計時」。當時間段結束時,它會要求操作系統給它一個SIG最終結果。

+0

雖然是瀏覽器/平臺依賴:) :) –

+0

@SuneTrudslev:當然是的。但正如我所描述的,ES實現與OS信號和定時器一起工作,所以這非常可靠。 – jAndy

+0

謝謝!我也會試試這個。我的擴展如果適用於Chrome和所有操作系統。 – Srikanth