• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

javascript setTimeout a setInterval w tej samej funkcji.

Object Storage Arubacloud
0 głosów
394 wizyt
pytanie zadane 29 sierpnia 2018 w JavaScript przez Joachim Winkowski Obywatel (1,570 p.)

Próbuję zrozumieć różnicę pomiędzy setTimeout a setInterval. Utworzyłem kod który wykonuje chyba to samo. Wynik daje ten sam. Ale ktoś mi może powiedzieć które jest lepsze i dlaczego?

var waitForEl = function(zmienna, callback) {
    if (zmienna==5) {
        callback();
    } else {
       const time = setInterval(function() {
            if (zmienna > 4) {clearInterval(time); waitForEl(zmienna, callback);return}
            console.log("Zmienna to: "+zmienna);
            zmienna++;
            
        }, 100);
    }
};
var waitForEl = function(zmienna, callback) {
    if (zmienna==5) {
        callback();
    } else {
        setTimeout(function() {
            console.log("Zmienna to: "+zmienna);
            zmienna++;
            waitForEl(zmienna, callback);
        }, 100);
    }
};
waitForEl(0, function() {
    console.log("Zmienna osiągneła wartość 5");
});

 

1 odpowiedź

0 głosów
odpowiedź 29 sierpnia 2018 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 29 sierpnia 2018 przez Joachim Winkowski
 
Najlepsza

Polecam poczytać:

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval

https://develoger.com/settimeout-vs-setinterval-cff85142555b

https://javascript.info/settimeout-setinterval

I obejrzeć:

https://www.youtube.com/watch?v=8aGhZQkoFbQ

Zauważalna różnica na "poziomie" kodu polega na tym, że jeśli nie przerwiesz interwału, to on będzie działał praktycznie przez cały czas życia aplikacji (lub dopóki wątek strony w przeglądarce nie zostanie "uśpiony"). Przy timeoutcie masz o tyle większą kontrolę, że sam uruchamiasz kolejny timer, więc możesz w między czasie zmienić opóźnienie kolejnego lub wykonać inną akcję przed - w ogóle - wysłaniem następnego timeouta do przetwarzania przez API (przeglądarki lub Node).

Różnice w wydajności oraz zalety i wady są omówione w pierwszych linkach. Więc, w zależności co chcesz osiągnąć, do tego dobierz setTimeout lub setInterval

Podobne pytania

0 głosów
1 odpowiedź 501 wizyt
0 głosów
1 odpowiedź 300 wizyt
pytanie zadane 19 marca 2020 w JavaScript przez kubaa322 Użytkownik (710 p.)
+1 głos
3 odpowiedzi 529 wizyt
pytanie zadane 26 kwietnia 2021 w JavaScript przez molik Użytkownik (950 p.)

92,555 zapytań

141,402 odpowiedzi

319,544 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...