• 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.

Fiszki IT
Fiszki IT
0 głosów
263 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 (164,920 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ź 231 wizyt
0 głosów
1 odpowiedź 92 wizyt
pytanie zadane 19 marca 2020 w JavaScript przez kubaa322 Użytkownik (710 p.)
+1 głos
3 odpowiedzi 97 wizyt
pytanie zadane 26 kwietnia w JavaScript przez molik Użytkownik (820 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

84,835 zapytań

133,644 odpowiedzi

296,137 komentarzy

56,080 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...