微信h5頁面在ios設備上定時器切入後臺後不執行導致驗證碼倒計時出問題解決方法

問題描述:

一般計算驗證碼的思路是,採用定時器開啓60s進行倒計時,然後將60這個值進行遞減,將值賦值到顯示數據的那個變量上。這種方式在安卓上是沒問題的,因爲安卓切入後臺之後定時器還是會執行,所以時間的計算上不會有問題。但是ios不是,ios一旦切入後臺定時器就停了,切回來再繼續,所以上述的思路就會有問題,和真正經過的時間不一樣了。

解決思路:

爲了兼容所有設備,就必須要一直採用計算真實時間差的方式進行倒計時。這樣的話,在安卓上面通過計算真實時間差計時,時間沒問題。在ios設備上,切入後臺切回來的時候,定時器恢復,計算真實的時間差,然後設置上去,這樣就可以了。

code:

showCodeTimer() {
   // 初始化顯示時間
   this.codeTime = 60;
   // 獲取點擊時間
   const second = Math.floor(new Date().getTime() / 1000);
   // end

   this.timer = setInterval(() => {
      // 獲取當前時間
      const newSecond = Math.floor(new Date().getTime()/1000);
      // 得到剩餘時間
      const time = 60 - Math.round(newSecond - second);
      // end

      if (time < 1) {
         // 時間超過了60s就幹掉定時器了
         clearInterval(this.timer);
         this.timer = null;
         // 自己的邏輯
      } else {
         // 時間沒超過60s,就賦值給顯示時間變量
         this.codeTime = time;
      }
   }, 1000);
},

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章