0Pricing
Dart Academy · Lekcja

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 B

Dlaczego 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

  1. Pętla zdarzeń i mikrozadania
  2. Tworzenie i oczekiwanie na Future
  3. Obsługa błędów w kodzie async
  4. Future.wait i praca równoległa
← Powrót do Dart Academy