亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue項目開發中setTimeout等定時器的管理問題

2019-11-19 12:56:57
字體:
來源:轉載
供稿:網友

一、問題來源。

在項目中,我們經常有這樣的需求,一個頁面初始化后,需要不斷的去請求后端,來獲取當前某個記錄的最新狀態。

顯然,這個可以用setTimeout以及回調中繼續setTimeout來實現。

我們假設定時器是在頁面#/test/aaa上創建的。

但是,會遇到以下兩個問題,我從#/test/aaa   這個頁面切換到  #/test/bbb頁面后如果停留在#/test/bbb,定時器還在跑。

其次,如果我不斷在#/test/aaa 和 #/test/bbb兩個頁面之間不斷的切換,而且切換時間小于定時器的間隔時間時,也會出現

重復創建setTimeout的情況。

現在的問題就是,我們如何做到管理定時器。

二、示例代碼。

created() {  if ( this.timeOut ) {    clearTimeout(this.timeOut);  }  this.getListIng();},computed: {  timeOut: {    set (val) {      this.$store.state.timeout.compileTimeout = val;    },    get() {      return this.$store.state.timeout.compileTimeout;    }  },},methods: {  getListIng() {    // 這里是一個http的異步請求    if ( getUrlModule() == 'aaa' ) {      let _this = this;      this.timeOut = setTimeout(() => {        _this.getListIng();      }, 5000);    } else {      this.timeOut = '';    }  },}

(1)如上面代碼所示,當創建頁面(created執行)時,會先判斷變量this.timeOut是否存在,如果存在,先clearTimeout掉。

(2)而,this.timeOut這個變量對應的是全局store里的this.$store.state.timeout.compileTimeout。并且是雙向綁定的,這個

請自行搜索vue2.0中computed用法。

 (3)在我們的主函數getListIng()中,會先使用函數getUrlModule()根據url判斷當前頁面是否是aaa頁面,如果是的,就執行setTimeOut,

如果不是,就不行執行了,并且設置this.timeOut = '';

我們假設上面沒有if ( getUrlModule() == 'aaa' ) 這句判斷,會出現,當我們已經跳出了當前aaa頁面,去了bbb頁面并且一直停留在bbb頁面時,

還有setTimeout在執行,就會不斷有http的請求。

如果沒有if ( this.timeOut ) { clearTimeout(this.timeOut); } 這句代碼。當我們不斷在2個頁面之間切換時,且切換的頻率很高。會出現多次創建

setTimeout的情況。這個邏輯稍微有點繞,請閱讀者自行演算。

三、我們必須清楚的事實。

(1)vue中$store里創建的變量,其實是全局變量,這個變量在切換頁面時不會清除,當我們刷新頁面時會清除掉。

(2)在前端頁面中,當我們刷新頁面時,會將當前頁面之前創建的setTimeout以及其他定時器都清除掉。但是,切換頁面(僅僅是路由切換)

是不會清除的。

(3)setTimeout、setinterval有本質的不同,前者只執行一次,除非你在回調中,不斷的調用,而后者是不間斷調用的。但是,我在各種實踐中發現,

還是setTimeout好用。因為,setTimeout可以根據條件,及時在回調中停用。如果采用setinterval,我們很有可能捕捉不到停用的條件而無法停用。

補充:Vue之SetTimeout

1.前言

相信很多人都遇到過這樣的問題,頁面數據需要不斷的刷新,也就是不斷的發送ajax請求來更新數據,那么在vue中怎樣做才比較好呢?這里介紹一下我踩的坑,以及解決方案

2.問題

settimeout用來調用請求數據,但是我遇到的問題就是,沒有用合適的方式去關閉settimeout,出現了離開當前頁面,請求還在不斷的發送問題,這樣給服務器帶來了無必要的壓力。附上之前的代碼:

self.deployTimeOutId = setTimeout(() => {              self.getDeployList(false);            }, 5000);

說明:這一段代碼是嵌在getDeployList方法中的,離開當前頁面的是時候,必須要去手動的把這個settimeout清除才行。一般這個寫在destoryed()這個鉤子里。

window.clearTimeout(this.deployTimeOutId);

雖然這樣處理了,但在邏輯比較復雜的情況下,還是出現了沒有關閉的情況,而且排查起來很痛苦。下面介紹一種針對Vue比較好的做法。

3.解決方案

  let self=this;  if (self && !self._isDestroyed) {            setTimeout(() => {              if (self && !self._isDestroyed)                self.getDeployList();            }, 5000);          }

_isDestroyed這個屬性表示的是當前這個組件是否有被銷毀,true表示當前的組件已經被銷毀,通過上面這個判斷,我們就不需要自己手動的去用ID來清除了,這個就相當于遞歸嘛,有了一個結束判斷,避免了死循環咯~~

總結

以上所述是小編給大家介紹的vue項目開發中setTimeout等定時器的管理問題,希望對大家有所幫助,如果大家有任何疑問請

給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久国产精品| 在线日韩中文字幕| 亚洲精品美女在线观看| 精品久久久久久中文字幕一区奶水| 欧美一区二区三区免费观看| 亚洲黄色av女优在线观看| 91av福利视频| 欧美国产日韩中文字幕在线| 日韩av免费看| 性亚洲最疯狂xxxx高清| 911国产网站尤物在线观看| 欧美午夜美女看片| 在线电影中文日韩| 欧美精品午夜视频| 国产精品大陆在线观看| 姬川优奈aav一区二区| 久久91超碰青草是什么| 91精品久久久久久久久久久| 久久久99免费视频| 国产欧美在线播放| 久久亚洲精品一区二区| 亚洲国语精品自产拍在线观看| 亚洲国产一区二区三区四区| 久久99青青精品免费观看| 热99精品只有里视频精品| 亚洲精品第一国产综合精品| 色综合久久天天综线观看| 91精品综合久久久久久五月天| 日韩网站在线观看| 亚洲一级一级97网| 久久久国产91| 精品福利一区二区| 久久av在线播放| 国产精品日韩av| 国产精品极品尤物在线观看| 日本一区二区在线免费播放| 夜夜躁日日躁狠狠久久88av| 5566日本婷婷色中文字幕97| 欧美黑人性猛交| 亚洲福利在线看| 亚洲性视频网站| 中文字幕欧美亚洲| 国产欧美在线观看| 日韩亚洲第一页| 国产精品免费久久久久久| 欧美中文字幕在线| 欧美黑人性猛交| 久久在线精品视频| 亚洲电影免费观看高清完整版在线| 成人福利网站在线观看11| 欧美激情第三页| 国产在线精品自拍| 国产欧美日韩亚洲精品| 国产成人精品午夜| 日韩成人激情影院| 亚洲第一区中文字幕| 亚洲欧洲午夜一线一品| 日本亚洲欧美成人| 国产精品欧美日韩久久| 欧美精品久久久久久久久| 91在线|亚洲| 欧美福利视频在线| 欧美日韩在线第一页| 国产一区二区三区视频| 欧美风情在线观看| 亚洲成人1234| 亚洲深夜福利网站| 久久久久久久色| 国产精品99久久99久久久二8| 亚洲综合日韩中文字幕v在线| 欧美野外wwwxxx| 日本亚洲欧美三级| 亚洲精品suv精品一区二区| 午夜精品一区二区三区在线视频| 国产精品视频最多的网站| 欧美视频在线观看 亚洲欧| 日本精品视频在线播放| 91香蕉嫩草影院入口| 久久久国产视频91| 日本一区二区三区在线播放| 国产亚洲精品美女| 久久99久久99精品免观看粉嫩| 91大神福利视频在线| 欧美激情免费视频| 91精品国产免费久久久久久| 亚洲毛片在线免费观看| 日韩经典第一页| 精品中文视频在线| 国产精品爽爽ⅴa在线观看| 日韩在线小视频| 一个人看的www欧美| 亚洲欧洲国产伦综合| 亚洲精品国产精品自产a区红杏吧| 日韩在线观看免费网站| 97在线观看免费高清| 欧美日韩亚洲91| 91亚洲国产成人精品性色| 久久久av亚洲男天堂| 亚洲第一区中文字幕| 日本伊人精品一区二区三区介绍| 欧美视频在线观看免费| 成人av在线天堂| 亚洲国产成人精品久久久国产成人一区| 最近的2019中文字幕免费一页| 国产一区二中文字幕在线看| 亚洲毛片在线观看| 日韩一区视频在线| 一区二区三区久久精品| 久久久人成影片一区二区三区| 66m—66摸成人免费视频| 欧美韩国理论所午夜片917电影| 亚洲美女精品成人在线视频| 欧美日本高清视频| 久久影视电视剧免费网站| 91国内精品久久| 日韩av免费网站| 美女黄色丝袜一区| 国产精品三级久久久久久电影| 国产欧美 在线欧美| 欧美激情综合色综合啪啪五月| 久久这里只有精品视频首页| 日韩视频第一页| 91美女福利视频高清| 最新国产成人av网站网址麻豆| 乱亲女秽乱长久久久| 一本色道久久综合狠狠躁篇怎么玩| 欧美国产日韩中文字幕在线| 欧美性猛交xxxx富婆| 欧美精品www在线观看| 91香蕉嫩草影院入口| 久久亚洲综合国产精品99麻豆精品福利| 国产精品视频yy9099| 亲子乱一区二区三区电影| 亚洲一区二区黄| 国产69精品久久久久99| 国产噜噜噜噜噜久久久久久久久| 亚洲性视频网站| 91精品国产综合久久香蕉最新版| 欧美日本在线视频中文字字幕| 亚洲国产天堂久久综合网| 91精品综合久久久久久五月天| 91精品国产91久久久| 日韩精品中文字幕有码专区| 国产mv免费观看入口亚洲| 国产精品美女免费看| 日韩欧美亚洲国产一区| 中文字幕精品一区二区精品| 久久精品在线播放| 亚洲欧美中文字幕在线一区| 亚洲人成电影网站| 欧美激情精品久久久久久大尺度| 成人免费观看49www在线观看| 久久伊人精品视频| 成人xxxx视频| 欧美极品美女视频网站在线观看免费| 91九色视频导航| 国产欧美在线看| 91视频-88av| 富二代精品短视频| 亚洲2020天天堂在线观看| 黄色精品在线看| 久久91超碰青草是什么| 91网在线免费观看| 国产精品日韩精品|