方案1:每次倒計(jì)時去服務(wù)端請求時間
//開啟定時器 var timer = setInterval(function () { //執(zhí)行請求,獲取當(dāng)前服務(wù)端時間并進(jìn)行相應(yīng)操作 }, 1000);
這個方案對于稍微有點(diǎn)經(jīng)驗(yàn)的開發(fā)人員來說,都知道是不可取的。因?yàn)檫@會給服務(wù)器造成無法想象的壓力,導(dǎo)致應(yīng)用崩潰。在這個頁面停留一分鐘,那么請求就發(fā)送了60次,假如此時有100個人在訪問這個頁面,那么一分鐘就有6000條請求,人數(shù)如果再增長,這絕對會造成不必要的服務(wù)器壓力。并且這個方案的倒計(jì)時,也會存在很大的誤差,因?yàn)檎埱蟠嬖谘舆t,跟你的網(wǎng)絡(luò)狀態(tài)也有很大的關(guān)系。
方案2:從服務(wù)端返回以服務(wù)器時間為基準(zhǔn)的倒計(jì)時時間戳
//開啟定時器 //假設(shè)請求獲取到一個時間戳?xí)r間差 dateDiff var timer = setInterval(function () { //每秒會獲取本地時間,這樣就算執(zhí)行的周期不準(zhǔn)確 也可以準(zhǔn)確的獲取時間差 var countDown = endTime - (+Date.now())/1000 + dateDiff; // 倒計(jì)時頁面渲染 }, 1000);
優(yōu)點(diǎn):
在頁面生命周期中請求一次
準(zhǔn)確度高,就算頁面打開很久還是保持高準(zhǔn)確度
缺點(diǎn):
由于每秒獲取當(dāng)前時間,假如刻意在倒計(jì)時時期內(nèi),修改了本地時間將會導(dǎo)致倒計(jì)時異常。
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注Gxl網(wǎng)其它相關(guān)文章!
推薦閱讀:
Js+Canvas做出圖片壓縮
angularJS+Ionic在移動端進(jìn)行圖片上傳(附代碼)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com