Blog webdeveloperski Patryk yarpo Jar

Proteza sleep() w JS

Autor wiadomości Grudzień 2, 2010

Javascript nie posiada wprost funkcji sleep (tak jak to jest w PHP, czy C). Na szczęście nie wszystko stracone. Nie oznacza to wcale, że nie można na chwilę wstrzymać kodu, lub wykonać go po pewnym czasie. Są na to dwie metody.


Sposoby na akcję po czasie

window.setTimeout

Metoda ta przyjmuje dwa parametry - pierwszy jest to ciąg znaków lub referencja do funkcji, która ma się wykonać 1 raz. Drugi parametr to czas za jaki ma zostać wywołany podany wcześniej kod.

  • Przekazanie ciągu znaków
window.setTimeout("alert('działa')", 1000);

Podany kod jest evalowany. Ja niezbyt lubię to rozwiązanie. Lepiej używać referencji do funkcji lub funkcji anonimowych.

  • Przekazanie funkcji anonimowej
window.setTimeout( function() { alert('działa'); }, 1000);

Wynik widoczny dla użytkownika jest taki sam. Ja polecam ten sposób.

window.setInterval

Wywołanie metody `setInterval' daje podobny efekt do setTimeout. Różnica polega na tym, że tu podany jako pierwszy parametr kod będzie się wykonywał wielokrotnie (w teorii do nieskończoności), co określony interwał.

  • Przerywanie ciągu wykonań window.clearInterval

Aby zakończyć powtarzające się wykonywanie zadanej akcji należy użyć metody window.clearInterval( int ).

Jako parametr przekazujemy identyfikator zwracany przez setInterval.

var count = 0;
var intId = window.setInterval( function() {
     alert('działa');
     count++;
     if (count >= 5)
    {
        window.clearInterval(intId);
    }
}, 5000);

Taki kod pozwoli wykonać się zadanej akcji 5 razy.

Uwaga

Obie metody nie powodują, że kod w danej linii "zawiesi się" na określony czas. Pójdzie dalej. Tylko podany [czy to jako string czy jako funkcja] kod zostanie odpalony równolegle do dalszej części kodu.

Komentarze (0) Trackbacks (0)

Brak komentarzy.


Leave a comment

 

Brak trackbacków.