簡單而不簡單的倒計時

2021-07-09 23:29:42 字數 675 閱讀 7347

大家對倒計時的第一反應就是通過settimeout方法來反覆執行,貌似這個問題都沒有需要**的價值,其實不然。

不同手機上和pc上的new date()會有些許差異,所以比如說給定乙個未來的時間戳,你獲取當前時間與未來時間戳的時間差,並不是獲取new date()然後與未來時間戳進行相減,而是通過當前伺服器時間來獲取這個最初的時間差,而這個伺服器時間不一定和你電腦上的時間統一。一般會以北京時間為標準時間

獲取當前時間和未來時間戳的最初時間差後,我們就開始倒計時了,這時大家都會考慮到要用settimeout執行來進行倒計時,可是這個在移動端的時候,會存在問題麼

事實是顯然的,js在ios端上會存在鎖定的問題,當你手指長時間停留在螢幕上時,ios會識別並停止一切js的執行,那麼當然settimeout也就失效了,當你手指離開螢幕時,你會發現,哎,好像時間不對啊

所以我們需要對這種情況進行對應處理,需要過一段時間校驗一次時間差,並重新開始倒計時,我目前採用的是60s的時候重新校驗一次時間。便於保證ios倒計時正常(當然,校驗前可能仍會存在數秒的偏差,這個可能仍需處理)

其實倒計時還存在乙個問題。。。settimeout(function(){},1000)並不是嚴格的一秒執行一次函式,所以如果我們的倒計時是利用的settimeout(function(){},time)這種形式的,本身倒計時時間也會存在一定偏差

當然一般人沒這麼死摳。。。

後端倒計時 php,簡單的PHP實現倒計時方法

todo count down 倒 計時 param string endtime return string time example endtime 2014 07 13 8 15 00 echo countdown endtime function countdown endtime endt...

sencha touch 簡單的倒計時外掛程式

效果如圖 天小時分秒 day,hour,minute,second 65 else if hour 0 小時分秒 hour,minute,second 67 else if minute 0 分秒 minute,second 69 else if second 0 秒 second 71 72me....

Android倒計時簡單方法實現

以前我們實現乙個倒計時功能是如何實現的呢?一般都是建立乙個執行緒來通過訊息處理實現更新介面,即handler handler new handler 配合new thread new runnable catch interruptedexception e start 但現在並不是用它實現,有更簡...