2012-03-16 22 views
5

Hola tengo este fragmento de código que lanzará algunos incluso después del tiempo que elijo.setInterval - ¿Cómo disparar solo una vez?

El problema es que si, por ejemplo, puse 3 segundos, se disparará cada 3 segundos, lo que necesito es disparar solo una vez después de 3 segundos.

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

Use 'setTimeout' en su lugar. –

+0

alternativamente, haga que 'intervalReference' sea global (moverlo fuera de la función 'playSound' y luego borrarlo dentro de' senDataTimeout' - pero yo optaría por 'setTimeout' – scibuff

Respuesta

12

En cambio, usa setTimeout, funciona casi igual pero solo se disparará una vez. Usted tiene clearTimeoutsetTimeout y así que es muy similar a SetInterval

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

Usted no tiene que utilizar clearTimeout más. Pero para su información existe y funciona igual que clearInterval.

13

No es necesario setInterval, es necesario setTimeout.

Como su nombre indica, setInterval se dispara regularmente, mientras que setTimeout se dispara una sola vez. El uso es el mismo sin embargo.

Cuestiones relacionadas