2012-03-16 58 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只发射一次。虽然用法是一样的。