簡體   English   中英

如何使用特定的日期作為setTimeout函數中的延遲

[英]How to use specific Date as the delay in setTimeout function

我想顯示特定日期和時間的圖像,而無需用戶采取任何措施,也不會刷新頁面。

謝謝。

使用setTimeout在指定日期調用函數可以通過這種方式設置

var alertDate = new Date("March 22, 2017 15:20:00").getTime(),
   onloadDate = Date.now(),
         tOut = alertDate - onloadDate;

tOut > 0
    ? setTimeout(()=>{ console.log('ok') }, tOut )
    : console.log('already past');

new Date監視設置為MDN的方法
setInterval相比,它不檢查每個時間段的值,而只有計時器起作用。
最大延遲超時/間隔值= 0x7FFFFFFF = 24day 20h 31m 23s 647ms因此,如果要調用函數,例如,在明年,可以將setInterval與較大的時間段和setTimeout結合使用

您可以使用setInterval定期檢查日期,以及日期是否正確-顯示圖像。 這是一些簡單的代碼:

var dateToDisplayImageOn = new Date(...);
setInterval(function() {
   if(dateToDisplayImageOn == today) {
       displayImage();
   }
}, 1000);

這可能是一個解決方案

var showDate = new Date("March 22, 2017 15:46:00");
var thisDate = new Date();
if(showDate == thisDate) {
 // code for showing picture
};

您可以每隔一段時間檢查一下該語句是否為真

我認為您可以使用localStorage來實現這一點。 您可以將代碼粘貼到控制台中,它將起作用。

 (function(){ //somewhere in your code to set showPicTime var time = new Date(new Date().getTime() + 10000); localStorage.setItem("showPicTime", time) //when page loads get showPicTime form localStorage var showPicTime = new Date(localStorage.getItem("showPicTime")).getTime(); var pollingHandler = setInterval(function(){ var now = new Date(); if(showPicTime - now < 0){ console.log("Show picture"); //kill the loop clearInterval(pollingHandler); } }, 1000); }()) 

暫無
暫無

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

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