Pętla zdarzeń i mikrozadania
Zrozumienie, jak Dart planuje pracę asynchroniczną
Pętla zdarzeń i mikrozadania to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Jeden wątek, bez oczekiwania
Dart wykonuje kod w jednym wątku, a mimo to aplikacja nigdy się nie zawiesza. Sekret tkwi w pętli zdarzeń, która planuje pracę zamiast blokować wykonanie. ⚡
Działanie pętli zdarzeń
Pętla zdarzeń to prosty cykl: wybierz kolejne oczekujące zadanie, wykonaj je do końca, a następnie powtórz. Kod działa w uporządkowanych, nieprzerwanych fragmentach.
Najpierw synchronicznie
Najpierw wykonywany jest cały zwykły kod, od góry do dołu. Dopiero gdy ta synchroniczna praca się zakończy, pętla zaczyna obsługiwać zaplanowane zadania.
Dwie kolejki
Pętla pobiera zadania z dwóch kolejek: kolejki mikrozadań i kolejki zdarzeń. Mikrozadania zawsze mają pierwszeństwo przed zdarzeniami.
Kolejka mikrozadań
Mikrozadanie to niewielka odroczona praca, na przykład callback zakończonego obiektu Future. Pętla opróżnia wszystkie mikrozadania, zanim sięgnie do kolejki zdarzeń.
Kolejka zdarzeń
Kolejka zdarzeń przechowuje większe zadania: timery, odczyty plików, dotknięcia ekranu i odpowiedzi sieciowe. Czekają one, aż wszystkie mikrozadania zostaną wykonane.
Planowanie mikrozadania
Pracę można przekazać do kolejki mikrozadań za pomocą scheduleMicrotask. Zostanie ona wykonana po bieżącym kodzie, ale przed każdym zdarzeniem.
scheduleMicrotask(() => print("microtask"));
print("right now");Planowanie zdarzenia
Timer (lub Future.delayed z zerowym opóźnieniem) umieszcza callback w kolejce zdarzeń, dzięki czemu zostanie on wykonany po wszystkich oczekujących mikrozadaniach.
Timer.run(() => print("event"));
print("right now");Mikrozadania wygrywają
Jeśli oba rodzaje zadań znajdują się w kolejkach, najpierw zostanie wykonane mikrozadanie. Taka kolejność sprawia, że łańcuchy Future działają szybko i przewidywalnie.
scheduleMicrotask(() => print("A"));
Timer.run(() => print("B"));
// prints A then BDlaczego wszystko działa płynnie
Ponieważ każde zadanie jest wykonywane do końca, aplikacja nigdy nie pozostaje częściowo zaktualizowana. Pętla zapewnia responsywność bez ręcznego zarządzania wątkami.
Nie zagładzaj pętli
Zapełnienie kolejki mikrozadań może zablokować zdarzenia na zawsze i zamrozić obsługę wejścia. Mikrozadania powinny być krótkie, aby zdarzenia również mogły zostać wykonane.
Szybkie sprawdzenie
Szybkie sprawdzenie kolejności w kolejkach.
Podsumowanie: pętla zdarzeń
Dowiedzieli się Państwo, że pętla zdarzeń najpierw wykonuje kod synchroniczny, następnie opróżnia kolejkę mikrozadań, a na końcu obsługuje zdarzenia. Dzięki tej kolejności Dart pozostaje jednowątkowy, a jednocześnie działa płynnie. 🎉
Często zadawane pytania
Czy lekcja „Pętla zdarzeń i mikrozadania” jest bezpłatna?
Tak — pełny tekst „Pętla zdarzeń i mikrozadania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Pętla zdarzeń i mikrozadania”?
Zrozumienie, jak Dart planuje pracę asynchroniczną Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Pętla zdarzeń i mikrozadania”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?
Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Pętla zdarzeń i mikrozadania
- Tworzenie i oczekiwanie na Future
- Obsługa błędów w kodzie async
- Future.wait i praca równoległa