微信小程序一個頁面設(shè)置多個定時器實現(xiàn)倒計時

最近業(yè)務(wù)上有個需求就是一個車輛管理列表驾窟,可以實現(xiàn)對每一輛車實現(xiàn)刷新舆床,刷新的目的在于更新刷新時間,讓車輛在首頁展示時按刷新時間倒序排列店读。所以為了增強(qiáng)用戶體驗嗦枢,得顯示每輛車的刷新倒計時。話不多說屯断,看初期UI設(shè)計的圖


UI設(shè)計圖

實現(xiàn)過程并不難文虏,難就難在返回上一頁進(jìn)來后顯示倒計時的文字就沒有了。后面解決的辦法時將點(diǎn)擊刷新按鈕的當(dāng)前時間存入緩存中殖演,在重新進(jìn)入頁面時先判斷緩存中是否存在此時間氧秘。如下圖


源碼1

當(dāng)這個問題也解決了,就發(fā)現(xiàn)一個很坑的問題趴久,每次上拉刷新或者重新進(jìn)入頁面后丸相,有時候會倒計時結(jié)束后又重新倒計時。重新檢查了好幾遍彼棍,沒發(fā)現(xiàn)邏輯有錯誤灭忠。定時結(jié)束后也清除了定時器,效果是下面這樣子的:


實現(xiàn)效果圖1

當(dāng)方框內(nèi)倒計時文字結(jié)束到00.00時候座硕。會重新倒計時弛作,而不是我想要的隱藏倒計時文字同時刷新按鈕變成綠色可用。

后面解決方案是將定時器的id也存入緩存中华匾,每次執(zhí)行一個新的定時器映琳,就判斷緩存中是否存在此id的定時器,如下圖

源碼2

以下是倒計時的主要代碼


interval(index) {//倒計時

? ? var that = this

? ? //先判斷緩存中是否存在此定時器,如果存在則清除此定時器萨西。

? ? //(目的在于當(dāng)重新進(jìn)入頁面時或者上拉刷新時候有鹿,需要重新從后臺加載數(shù)據(jù),這時候在數(shù)據(jù)加載過程中會會判斷緩存中是否存在車輛的刷新時間數(shù)據(jù)谎脯,如果存在葱跋,則調(diào)用此倒計時方法,而這時候調(diào)用則會出現(xiàn)倒計時結(jié)束后會重新倒計時穿肄,因為這時候的倒計時已經(jīng)不是原來那個倒計時方法了年局。說的可能有點(diǎn)懵逼,咸产,把如下4行去掉測試,你們就明白)

? ? var interval_id = wx.getStorageSync('interval'+index)

? ? if (interval_id){

? ? ? clearInterval(interval_id)

? ? }

? ? var interval = setInterval(function () {

? ? ? //將每個定時器的id存入緩存,這么做也是沒辦法

? ? ? wx.setStorageSync('interval' + index, interval)

? ? ? let insertTime = 'insertTime[' + index + ']'

? ? ? var disabled = 'disabled[' + index + ']'

? ? ? //從緩存中讀取是否有倒計時數(shù)據(jù)

? ? ? var countDownTime = wx.getStorageSync(insertTime);//時間戳格式

? ? ? if (countDownTime){

? ? ? ? var nowTime = Date.parse(new Date());//當(dāng)前時間戳

? ? ? ? var differ_time = countDownTime - nowTime;//時間差:(10分鐘)

? ? ? ? if (differ_time > 0) {

? ? ? ? ? var differ_minute = Math.floor(differ_time % (3600 * 1e3) / (1000 * 60));

? ? ? ? ? var s = Math.floor(differ_time % (3600 * 1e3) % (1000 * 60) / 1000)

? ? ? ? ? if (differ_minute.toString().length < 2) {

? ? ? ? ? ? differ_minute = "0" + differ_minute;

? ? ? ? ? }

? ? ? ? ? if (s.toString().length < 2) {

? ? ? ? ? ? s = "0" + s;

? ? ? ? ? }

? ? ? ? ? var str = differ_minute + ':' + s;

? ? ? ? ? that.setData({

? ? ? ? ? ? [insertTime]: str,

? ? ? ? ? ? [disabled]: true

? ? ? ? ? });

? ? ? ? } else {// 當(dāng)?shù)褂嫊r結(jié)束仲闽,不再進(jìn)行倒計時

? ? ? ? ? console.log("不進(jìn)行倒計時");

? ? ? ? ? that.setData({

? ? ? ? ? ? [insertTime]: '00:00',

? ? ? ? ? ? [disabled]: null

? ? ? ? ? });

? ? ? ? ? wx.removeStorageSync(insertTime)

? ? ? ? ? wx.removeStorageSync('interval' + index)

? ? ? ? ? clearInterval(interval)

? ? ? ? }

? ? ? }else{

? ? ? ? var nowTime = Date.parse(new Date());//當(dāng)前時間戳

? ? ? ? var countDownTime = nowTime + (600*1000);//時間差:(10分鐘)

? ? ? ? wx.setStorageSync(insertTime, countDownTime)

? ? ? ? that.setData({

? ? ? ? ? [insertTime]: '10:00',

? ? ? ? ? [disabled]: true

? ? ? ? });

? ? ? }

? ? }, 1000);

? }



最終效果展示:由于不能上傳視頻脑溢,所以就將就著看圖片把


實現(xiàn)效果圖2
實現(xiàn)效果圖3


想要完整源碼的朋友可以在下方留言哦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赖欣,隨后出現(xiàn)的幾起案子屑彻,更是在濱河造成了極大的恐慌,老刑警劉巖顶吮,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件社牲,死亡現(xiàn)場離奇詭異,居然都是意外死亡悴了,警方通過查閱死者的電腦和手機(jī)搏恤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來湃交,“玉大人熟空,你說我怎么就攤上這事「爿海” “怎么了息罗?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長才沧。 經(jīng)常有香客問我迈喉,道長,這世上最難降的妖魔是什么温圆? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任挨摸,我火速辦了婚禮,結(jié)果婚禮上捌木,老公的妹妹穿的比我還像新娘油坝。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布澈圈。 她就那樣靜靜地躺著彬檀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞬女。 梳的紋絲不亂的頭發(fā)上窍帝,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機(jī)與錄音诽偷,去河邊找鬼坤学。 笑死,一個胖子當(dāng)著我的面吹牛报慕,可吹牛的內(nèi)容都是我干的深浮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼眠冈,長吁一口氣:“原來是場噩夢啊……” “哼飞苇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜗顽,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤布卡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雇盖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忿等,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年崔挖,在試婚紗的時候發(fā)現(xiàn)自己被綠了贸街。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡虚汛,死狀恐怖匾浪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卷哩,我是刑警寧澤蛋辈,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站将谊,受9級特大地震影響冷溶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尊浓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一逞频、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧栋齿,春花似錦苗胀、人聲如沸襟诸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歌亲。三九已至,卻和暖如春澜驮,著一層夾襖步出監(jiān)牢的瞬間陷揪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工杂穷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悍缠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓耐量,卻偏偏與公主長得像飞蚓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子廊蜒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容