JavaScript sleep: jak samodzielnie zbudować funkcję pauzy

JavaScript sleep: jak samodzielnie zbudować funkcję pauzy

W rozpędzonym świecie programowania JavaScript stał się jednym z najpopularniejszych i najbardziej wszechstronnych języków. Jedną z częściej poszukiwanych możliwości jest wstrzymanie kodu, czyli, jak się to zwykle mówi, „uśpienie” go na chwilę. I tu na scenę wchodzi pojęcie „JavaScript sleep”.

javascript
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

JavaScript Sleep: zasłużona pauza w przebiegu twojego kodu

Czym jest sleep w JavaScripcie?

Mówiąc krótko, „sleep” w JavaScripcie to funkcja, która wstrzymuje wykonanie kodu na określony czas. JavaScript jest jednak z natury nieblokujący i asynchroniczny, więc nie ma natywnej funkcji „sleep”, jaką znajdziesz w innych językach programowania.

Jak działa sleep w JavaScripcie?

„sleep” da się w JavaScripcie zbudować z obiektów Promise i funkcji setTimeout, natywnej funkcji języka, która pozwala ustawić opóźnienie przed wywołaniem konkretnej funkcji. Stosuje się go zwykle w kontekście asynchronicznym, czyli razem z funkcjami async i słowem kluczowym await.

Praktyczny przykład sleep w JavaScripcie

Wyobraź sobie, że budujesz aplikację webową i musisz opóźnić konkretne działanie, na przykład wyświetlenie komunikatu użytkownikowi. Wtedy „JavaScript sleep” zastosujesz tak:

javascript
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function demo() {
  console.log('Bonjour, utilisateur !');
  await sleep(2000);
  console.log('Comment ça va ?');
}

demo();

W tym przykładzie funkcja demo najpierw wypisuje komunikat „Bonjour, utilisateur !”, potem czeka dwie sekundy (2000 milisekund) dzięki funkcji sleep, a na końcu pokazuje komunikat „Comment ça va ?”.

Funkcja sleep w JavaScripcie: błogosławieństwo czy przekleństwo?

Zalety sleep w JavaScripcie

„JavaScript sleep” daje kilka korzyści. Przede wszystkim pozwala kontrolować przebieg kodu i opóźniać wybrane działania, co w wielu sytuacjach bywa przydatne. Jeśli chcesz na przykład pokazywać użytkownikowi kolejne komunikaty w pewnych odstępach, „sleep” w JavaScripcie nada się do tego idealnie.

Wady sleep w JavaScripcie

Funkcja „sleep” w JavaScripcie ma jednak także wady. Ponieważ JavaScript jest językiem nieblokującym, „sleep” może zablokować wykonanie reszty kodu, a to przekłada się na słabszą wydajność i gorsze wrażenia użytkownika. Trzeba więc stosować ją z ostrożnością.

Najczęstsze pytania

Czy mogę użyć sleep w pętli?

Tak, „sleep” w JavaScripcie możesz stosować w pętli. Pamiętaj jednak, że może to zablokować wykonanie reszty kodu. Zwykle lepiej obsłużyć asynchroniczność w pętli funkcjami async i obiektami Promise.

Czy sleep w JavaScripcie to to samo co setTimeout?

Nie, „sleep” w JavaScripcie i setTimeout to nie to samo. setTimeout ustawia opóźnienie przed wywołaniem funkcji, natomiast „sleep” w JavaScripcie buduje się zwykle z setTimeout połączonego z obiektem Promise, żeby wstrzymać wykonanie kodu.

Czy sleep w JavaScripcie blokuje wykonanie reszty kodu?

Tak, „sleep” w JavaScripcie może zablokować wykonanie reszty kodu, zwłaszcza gdy sięgasz po niego bez zastanowienia. Dlatego zaleca się łączyć go z funkcjami async i obiektami Promise.

Czy w JavaScripcie istnieje natywna funkcja sleep?

Nie, w odróżnieniu od niektórych innych języków programowania JavaScript nie ma natywnej funkcji „sleep”. Możesz jednak zbudować własną, korzystając z obiektów Promise i funkcji setTimeout.

Czy sleep w JavaScripcie szkodzi wydajności mojej aplikacji?

Korzystanie ze „sleep” w JavaScripcie niekoniecznie szkodzi wydajności twojej aplikacji, ale może zaszkodzić, jeśli nadużywasz go bez zastanowienia. Dlatego tak ważne jest, żeby dobrze rozumieć, jak z tej funkcji korzystać.

Podsumowanie

Podsumowując, „JavaScript sleep” to potężne narzędzie do sterowania przebiegiem twojego kodu. Korzystanie z niego trzeba jednak opanować, inaczej narobisz sobie problemów z wydajnością. Kiedy rozumiesz, jak działa asynchroniczność w JavaScripcie, i sięgasz po właściwe techniki, wyciągniesz z tej funkcji maksimum.

Ostatecznie „JavaScript sleep” jest jak dobrze przespana noc: przynosi korzyść, o ile stosujesz go z głową. Poświęć więc chwilę na zrozumienie, jak działa i jak sensownie wpleść go w swoje projekty. Zobaczysz, twój kod popłynie jak we śnie!

JavaScript

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty, e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.