2012-03-16 4 views
5

こんにちは私は選択した後でもいくつかのコードを発するこのコードスニペットを持っています。setInterval - 一度だけ発射する方法?

問題は、たとえば3秒間置くと3秒ごとに起動し、3秒後に1回だけ起動する必要があるということです。

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

代わりに 'setTimeout'を使用してください。 –

+0

代わりに、 'intervalReference'をグローバルにします(' playSound'関数の外に移動し、 'senDataTimeout'の内部でそれをクリアします)が、' setTimeout' – scibuff

答えて

12

代わりにsetTimeoutを使用してください。これはほとんど同じですが、1回だけ起動します。あなたはもうてclearTimeoutを使用する必要はありませんのsetInterval

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

にため、その非常によく似clearTimeoutsetTimeoutを持っています。しかし、それは存在し、clearIntervalと同じように動作します。

13

あなたがsetTimeoutを必要とする、setIntervalを必要としません。

名前が言うとおり、setIntervalは定期的に発火しますが、setTimeoutは1回だけ発火します。しかし、使い方は同じです。

関連する問題