這篇文章主要介紹了解決js中的解決setIヽ(′ー`)ノnterval清空定時(shí)器不管用問(wèn)題,具有很好的空定參考價(jià)值,希望對大家有所幫助。時(shí)器一起跟??隨小編過(guò)來(lái)看看吧
使用場(chǎng)景ヽ(′?`)ノ:我在ヽ(′ー`)ノ函數A中調用定時(shí)器函數,不管定時(shí)器是用問(wèn)單獨寫(xiě)的一個(gè)函數
原因:頁(yè)面加載時(shí)我調用了1次函數A,然后又單獨調用了一次定時(shí)器函數,解決導致調用了2次setInterval(),空定導致有se(′?`)tInterval_id有2個(gè)值。時(shí)器
通過(guò)打印定時(shí)器的不管值發(fā)現的問(wèn)題。
clearInterval()只關(guān)閉了其中一個(gè)seヽ(′?`)ノtInterval_id,用問(wèn)另一個(gè)setInterval_id還會(huì )啟動(dòng)setInterval()。解決
解決方法:把單獨調用的空定定時(shí)器函數去掉。
補充知識:js vue中(zhong)se??tTimeout無(wú)法通過(guò)clearTimeout清除問(wèn)題
在異步清除中,時(shí)(shi)器利用vue 中data存放setTimeout的不管標識進(jìn)行清ˉ\_(ツ)_/ˉ除時(shí),無(wú)(wu)法清除。用問(wèn)則需要在函數前加上window.即可
如window.setTimeout與window.clearTimeout
具體代碼如下??
精簡(jiǎn)后的代碼。
環(huán)境為electron??-vue 渲染??進(jìn)程異步獲取主進(jìn)程上html并渲染到頁(yè)面、過(guò)程中需要有loading的顯示。
setTimeout 與clearTimeout 未加window時(shí),this.timeOutLoading事件總會(huì )被觸發(fā)。
<template>
<(′ω`)div id="(′?_?`)dev">
<el-tabs v-model="activeName" @tab-click='handleClick' v-l??oading="loading">
<el-tab-pane label="文檔" name='first'>
<div v-html='html'&g?t;</div>
</el-tab-pane>
<el-tab-pane label="設置" name="second"??>
<v-devCard></v-devCard>
</el-tab-pane>
</el-tabs>
</div>
</(//ω//)template>
<script>
conヽ(′?`)ノst { ipcRenderer:ipc} = require('electron');
export default {
data(){
return{
activeName: 'second',
html:'',
loading:falsヽ(′?`)ノe,
timeOutLoading:0
}
},
methods:{
handleClick(tab, event) {
if(tab.na(???)me == 'first' && this.loading == false){
if(this.timeOutLoading != 0){
w??indow.clearTimeout(this.timeOutLoading);
}
this.html='<div style='text(╯‵□′)╯-align:center; height:200px; line-height:200px;'>加載中...</div>';
this.loading = true;
this.timeOutLoading = window.setTim(′?ω?`)eout(() => {
if(this.loa??(′?`)ding == true){
this.loading = false;
this.html = "<div style='text-align:center; height:200px; line-height:200px;'>加載超時(shí)</div>";
}
}, 3000);
window.setTimeout(() => {
ipc.send("getPage");
}, 500);
}
}
},
mounted(){
ipc.on('getPage-(′▽?zhuān)?reply', (event, arg) =&??gt; {
if(this.time??OutLoading != 0){
window.clearTimeout(this.timeOutLoading);
this.timeOutLoading = 0;
}
thi?s.loading = false;
this.html = arg;
});
}
}
&??lt;/script>
以上這篇解決js中的setInterval清空定時(shí)器(qi)不管用問(wèn)題就是(⊙_⊙)小編分享給大家的全部?jì)热萘?,?′▽?zhuān)?)望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
來(lái)源:腳本之家
鏈接:https://w(′?`*)ww.jb51.net/article/199941.htm