javascript小技巧:同步服務(wù)器時間、同步倒計時
之前在網(wǎng)上看到有人提問,如何在頁面上同步顯示服務(wù)器的時間,其實實現(xiàn)方法有幾種,可能 一般人立馬就想到可以使用Ajax每隔一秒去請求服務(wù)器,然后將服務(wù)器獲取到時間顯示在頁面上,這樣雖然能夠?qū)崿F(xiàn),但存在一個很大的問題,那就是每隔一秒 去請求服務(wù)器,這樣如果用戶多了,服務(wù)器就會崩潰(內(nèi)存占用率會很大),所以在我看來,這種方法不可行,我這里給出一種解決方案,能夠?qū)崿F(xiàn)同步服務(wù)器時間、同步倒計時,卻不占用服務(wù)器太多資源,下面我給寫實現(xiàn)的思路
***步,當(dāng)用戶***次瀏覽頁面時,服務(wù)器首先獲取當(dāng)前時間并顯示在頁面上(比如:顯示在ID為timebox span中)
第二步,設(shè)置一個每隔一秒就計算新的時間(新時間以服務(wù)器時間為初始值,然后每隔一秒累加一秒并生成新的時間)
第三步,顯示第二步計算的時間
是不是很簡單,總結(jié)成一句話就是:以服務(wù)器時間為初始值,然后在頁面上自動每隔一秒就累加一秒生成新時間,這樣就能保證與服務(wù)器時間同步了,誤差基本在幾秒內(nèi),應(yīng)該沒關(guān)系了,好了看一下實現(xiàn)的代碼吧:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
代碼很簡單在此就不多作說明(我上面只顯示時分秒,大家也可以加上日期,加上日期可在當(dāng)h==0時,直接從服務(wù)器獲取一個日期或完整的時間,作為一次時間的校對),不懂的可以在下面評論,我會及時回復(fù)的,然后按照這種思路來實現(xiàn)一下同步倒計時,首先說明一下,什么是同步倒計時,就是類似秒殺一樣,設(shè)置一個結(jié)束時間,然后計算當(dāng)前時間與結(jié)束時間之間間隔,而且必需保證在不同的電腦、瀏覽器上顯示的倒計時時間均相同,實現(xiàn)代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|
為了保證倒計時的精確度,我采用了先將倒計時時間間隔統(tǒng)一計算成秒,然后減1秒再重新生成時間格式,當(dāng)然也可以按照上面時間同步的例子,直接進行時間減少,方法很多,我這個不一定是***的,歡迎大家交流,謝謝!