2012-03-16 59 views
5

你好,我有這段代碼,即使在我選擇了一段時間之後,它也會觸發一些代碼。setInterval - 如何只觸發一次?

問題是,例如,如果我放置3秒鐘,它會每3秒觸發一次,我需要的是它在3秒後只能觸發一次。

function playSound(timeLeft){ 
    var sendDataTimeout = function(){ 
     alert('OK'); 
    } 
    var intervalReference = 0; 
    clearInterval(intervalReference); 
    intervalReference = setInterval(sendDataTimeout, timeLeft); 
} 
+4

請改用'setTimeout'。 – 2012-03-16 17:29:25

+0

或者,使''intervalReference'全局(將其移到'playSound'函數之外,然後在'senDataTimeout'內清除它 - 但我會選擇'setTimeout' – scibuff 2012-03-16 17:30:42

回答

12

改爲使用setTimeout,它的工作原理幾乎相同,但只會觸發一次。你有clearTimeoutsetTimeout所以它非常類似的setInterval

function playSound(timeLeft){ 
    var sendDataTimeout = function(){ 
     alert('OK'); 
    } 
    setTimeout(sendDataTimeout, timeLeft); 
} 

您不必使用clearTimeout了。但僅供參考,它的工作原理與clearInterval一樣。

13

你不需要setInterval,你需要setTimeout

顧名思義,setInterval定期發射,而setTimeout只發射一次。雖然用法是一樣的。