如果呼叫 2 次、3 倍等等,這一次走得更快。
function startIdleTime() {
var ciclo;
function startSlidercicle() {
ciclo = setInterval( function() {
let seconds = parseInt(sessionStorage.getItem('idle'));
seconds = 1;
sessionStorage.setItem('idle', seconds);
}, 1000);
}
// start idle counter
if (!sessionStorage.getItem('idle')) {
alert('non esiste timer, lo imposto')
sessionStorage.setItem('idle', 0);
alert(3)
}
if (sessionStorage.getItem('idle') > 15) {
anotherFunction();
}
if (sessionStorage.getItem('idle') < 15 || !sessionStorage.getItem('idle')) {
clearInterval(ciclo);
startSlidercicle();
}
}
我需要設定idle time。何時15 i'll call an other function,
if <= 15 I reset only計數器為 0 但如果被呼叫幾次,我的計數會快 1 秒}, 1000);)
uj5u.com熱心網友回復:
看起來在實體化一個新的間隔之前沒有清除間隔。結果將是幾個間隔,它們將以不同的階段執行,并且看起來它以更短的間隔運行。
這種行為的原因是您沒有清除間隔,因為ciclo每次呼叫startIdleTime函式時都會創建一個新變數。可能您希望變數ciclo是全域的,以便在函式呼叫之間共享間隔處理程式。您需要擴大范圍,并且要擴大范圍,您只需將變數宣告移出函式定義:
var ciclo;
function startIdleTime() {
function startSlidercicle() {
另請注意,在以下行中:
sessionStorage.getItem('idle') < 15 || !sessionStorage.getItem('idle')
第二部分永遠不會被評估。假設getItem 回傳 null: thennull < 15為真,因此檢查變得無用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/496489.html
標籤:javascript
下一篇:等待組件變數由訂閱設定
