2017-10-08 33 views
0

我願不斷撥打以下使用setInterval(),但只有當if語句條件計算爲true的功能。 注:該功能是全球性的。的setInterval()的「如果」條件js函數

function view_stack(){ 
    if(my_stack.size() > 0){ 
     document.getElementById("stack_visual").innerHTML = my_stack.view(); 
    } else { 
     swal("Ohhhh Noes", "There are no items in the stack!", "error"); 
    } 
}  

有沒有一種方法可以讓我實現嗎?

+0

你需要清楚你想設置的時間間隔,如果條件爲真,或者你只是想如果真的去執行它。這些是兩種不同的事情 – Dellirium

+0

我想執行它。感謝您的澄清@Dellirium –

+0

只需撥打區間的功能,那麼,'的setInterval(view_stack,1000);'你的功能檢查,看看是否堆棧大小是存在的,做一個或其他依賴於它,所有你需要做就是打電話吧。 – Dellirium

回答

3

讓它在沒有任何事情時不會做任何事情。這樣你可以簡單地保持間隔運行。

有效的代碼已經是這樣寫的,我會重新安排這樣的:

function view_stack(){ 
    if(my_stack.size() === 0) return; 
    document.getElementById("stack_visual").innerHTML = my_stack.view(); 
} 

setInterval(view_stack, 1000); 

更優雅的解決方案是基於事件的,即每當my_stack變化,更新視圖。

+0

考慮一下改變'my_stack'的方法。應該很容易擺脫比較笨重的輪詢方式。 – Tomalak

1

你可以把一個if語句中setInterval函數像這樣:

setInterval(function() { 
    if(my_stack.size() > 0) { 
    view_stack(); 
    } 
}, 1000/60); 

所以,只有當my_stack.size() > 0它就會調用view_stack()功能。

注意setInterval()被觸發每秒60次。