2012-03-16 23 views
5

Witam Mam ten fragment kodu, który będzie uruchamiany nawet po wybranym czasie.setInterval - Jak strzelać tylko raz?

Problem polega na tym, że jeśli na przykład przez 3 sekundy będę strzelał co 3 sekundy, potrzebuję strzelać tylko raz po 3 sekundach.

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

Zamiast tego należy użyć 'setTimeout'. –

+0

alternatywnie, zrób 'interwałReference' globalny (przenieś go poza funkcję' playSound', a następnie wyczyść go wewnątrz 'senDataTimeout' - ale wybrałbym opcję' setTimeout' – scibuff

Odpowiedz

12

Zamiast tego działa prawie tak samo, ale uruchamia się tylko raz. Trzeba clearTimeout i setTimeout więc jest bardzo podobny do SetInterval

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

Nie trzeba używać clearTimeout więcej. Ale FYI istnieje i działa tak samo jak clearInterval.

13

Nie trzeba setInterval trzeba setTimeout.

Jak sama nazwa wskazuje, setInterval strzela regularnie, a setTimeout strzela tylko raz. Jednak użycie jest takie samo.