av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

解決vue 使用setTimeout,離開(kāi)當(dāng)前路由setTimeout未銷(xiāo)毀的問(wèn)題

瀏覽:96日期:2023-01-02 08:44:01

問(wèn)題:

從第一個(gè)頁(yè)面跳轉(zhuǎn)到第二個(gè)頁(yè)面后,如果停留在第二個(gè)頁(yè)面,定時(shí)器還在運(yùn)行。如果在兩個(gè)頁(yè)面之間來(lái)回跳轉(zhuǎn),跳轉(zhuǎn)時(shí)間小于定時(shí)器的間隔時(shí)間時(shí),也會(huì)出現(xiàn)重復(fù)創(chuàng)建setTimeout的情況。

原因:

當(dāng)我們刷新頁(yè)面時(shí),會(huì)將當(dāng)前頁(yè)面之前創(chuàng)建的setTimeout以及其他定時(shí)器都清除掉,但是僅僅是路由切換是不會(huì)清除的。

data () { return { ct: null }},methods: { start() { this.ct= setTimeout( () => {that.countdown(end)}, 1000) } end() { clearTimeout(this.ct); //清除 }}

setInterval()計(jì)時(shí)也需要clearInterval()來(lái)清除

補(bǔ)充知識(shí):小記VUE下setTimeOut和setInterval遇到的問(wèn)題

相信大家對(duì)著兩個(gè)函數(shù)都陌生,就是一個(gè)定時(shí)器,setTimeOut只執(zhí)行一次,而setInterval會(huì)重復(fù)執(zhí)行

需要注意的是:在setInterval不用的時(shí)候一定要用clearSetInterval關(guān)閉定時(shí)器。

說(shuō)一下最近開(kāi)發(fā)中遇到的問(wèn)題,我是用vue開(kāi)發(fā)的,順便記錄這個(gè)錯(cuò)誤。

我需要輪詢(xún)接口,所以使用setInterval。

// 我是想沒(méi)2秒執(zhí)行一次myFunc這個(gè)函數(shù)。setInterval(this.myFunc(),2000)//某個(gè)函數(shù)myFunc () { console.log(123)}

但實(shí)際的運(yùn)行結(jié)果是,只執(zhí)行了一遍,并沒(méi)有循環(huán)執(zhí)行。

原因是setInterval接受兩個(gè)參數(shù),第一個(gè)為要執(zhí)行的函數(shù),第二個(gè)為時(shí)間(毫秒)。

這里我犯的錯(cuò)誤是,我寫(xiě)的是一個(gè)函數(shù)的執(zhí)行this.myFunc() 因?yàn)榧恿耍ǎ┦且粋€(gè)執(zhí)行,而不是個(gè)函數(shù)。

于是我又改成這樣寫(xiě)了,在寫(xiě)個(gè)匿名函數(shù),函數(shù)體是我要執(zhí)行的。

setInterval(function () { this.myFunc()},2000)//某個(gè)函數(shù)myFunc () { console.log(123)}

理論上這樣是沒(méi)問(wèn)題的,會(huì)每2秒執(zhí)行一次this.myFunc(),但卻報(bào)錯(cuò)了。

原因是 老生常談的javaScript 的this 的問(wèn)題。

因?yàn)橛玫囊粋€(gè)function(){} 這里的 獨(dú)立的作用域 this指向了全局(這里是window)而且window里沒(méi)有myFunc這個(gè)函數(shù),所報(bào)了錯(cuò)。

用過(guò)vue的朋友應(yīng)該,基本vue中都是this.XXX這樣寫(xiě)。這里的this是Vue對(duì)象。

所以為了使this正確指向vue,我用了ES6的尖頭函數(shù)。

最終

setInterval(() => { this.myFunc()},2000)//某個(gè)函數(shù)myFunc () { console.log(123)}

尖頭函數(shù)因?yàn)樗奶厥庑裕膖his指向它外層的對(duì)象。

其實(shí)主要說(shuō)的是第二個(gè)問(wèn)題,第一個(gè)屬于對(duì)函數(shù)不熟悉,第二個(gè)則是VUE,ES6,this指向綜合的問(wèn)題。

以上這篇解決vue 使用setTimeout,離開(kāi)當(dāng)前路由setTimeout未銷(xiāo)毀的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
主站蜘蛛池模板: 中文字幕免费观看 | 亚洲成人毛片 | 久久99精品久久久久婷婷 | 网站黄色在线免费观看 | 亚洲人va欧美va人人爽 | 日韩在线一区视频 | 日本欧美黄色片 | 欧美日韩一区二区在线 | 日韩一区二区在线视频 | 一区二区成人 | 一区二区三区在线电影 | 亚洲精品免费在线观看 | 中文字幕乱码一区二区三区 | 欧美乱码精品一区二区三区 | 欧美性受| 久久伊人影院 | 国产精品国产三级国产aⅴ中文 | 四虎影院在线播放 | 午夜羞羞 | 亚洲一二三视频 | 免费视频二区 | 91电影在线 | 一级黄色片一级黄色片 | 国产精品免费一区二区三区四区 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 欧美成ee人免费视频 | 欧美一级免费片 | 亚洲aⅴ精品 | 国产午夜精品福利 | 蜜桃av人人夜夜澡人人爽 | 亚洲黄色一区二区三区 | 亚洲欧美综合 | 第四色播日韩第一页 | 日韩电影一区 | 成人综合一区 | 国产福利91精品 | 在线视频 亚洲 | 国产成人精品网站 | 永久免费在线观看 | 中文字幕精品一区 | 青青草视频网站 |