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