功能開發中,難免要涉及使用定時器,但定時器有作用域,經常遇到需要將定時器功能同步操作的問題,即定時器全局化,此時可以在data中定義變量來實現
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) }) } })
來源:https://blog.csdn.net/admin_web/article/details/94838915