1. 程式人生 > >微信小程式用定時器實現倒計時效果

微信小程式用定時器實現倒計時效果

平常在微信小程式開發的時候,因專案的需求,倒計時必不可少,下面主要講解定時器在微信小程式中的使用。

這裡要先宣告一點的就是,該篇主要實現倒計時功能,而且實現是時長較短的倒計時,其他的優化什麼的不作主要考慮。

如果實現簡單的60s倒計時效果,我們可直接使用setInterval即可,但是在微信小程式中,我們需要用微信小程式的語法,這時就會遇到一個難題,那就是怎麼關閉定時器的問題,下面給出例項。

WXML程式碼:

<view class='countDown'>倒計時:<text style='color:red'>{{countDownNum}}</text>s</view>

JS程式碼:

Page({
  /**
   * 頁面的初始資料
   */
  data: {
    timer: '',//定時器名字
    countDownNum: '60'//倒計時初始值
  },

  onShow: function(){
    //什麼時候觸發倒計時,就在什麼地方呼叫這個函式
    this.countDown();
  },

  countDown: function () {
    let that = this;
    let countDownNum = that.data.countDownNum;//獲取倒計時初始值
    //如果將定時器設定在外面,那麼使用者就看不到countDownNum的數值動態變化,所以要把定時器存進data裡面
    that.setData({
      timer: setInterval(function () {//這裡把setInterval賦值給變數名為timer的變數
        //每隔一秒countDownNum就減一,實現同步
        countDownNum--;
        //然後把countDownNum存進data,好讓使用者知道時間在倒計著
        that.setData({
          countDownNum: countDownNum
        })
        //在倒計時還未到0時,這中間可以做其他的事情,按專案需求來
        if (countDownNum == 0) {
          //這裡特別要注意,計時器是始終一直在走的,如果你的時間為0,那麼就要關掉定時器!不然相當耗效能
          //因為timer是存在data裡面的,所以在關掉時,也要在data裡取出後再關閉
          clearInterval(that.data.timer);
          //關閉定時器之後,可作其他處理codes go here
        }
      }, 1000)
    })
  }
})
好了,這就是簡單的倒計時實現過程,大家可複製程式碼到微信開發者工具去驗證效果。