0Pricing
Dart Academy · Lekcja

Nasłuchiwanie za pomocą await for

Odczytywanie zdarzeń w miarę ich nadejścia

Nasłuchiwanie za pomocą await for 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.

Czym jest Stream

Stream to sekwencja wartości, które pojawiają się z czasem, a nie wszystkie naraz. Można myśleć o nim jak o Future, który dostarcza wiele wyników zamiast tylko jednego.

Strumienie a Future

Future zwraca później jedną wartość. Obiekt Stream przekazuje całą serię zdarzeń, jedno po drugim, aż poinformuje, że zakończył działanie. 🌊

Poznaj await for

Pętla await for odczytuje zdarzenia ze strumienia w miarę ich nadejścia. Każde wykonanie pętli dostarcza kolejną wartość wyemitowaną przez strumień.

await for (final value in stream) {
  print(value);
}

Musi działać w async

Ponieważ await for wstrzymuje wykonanie w oczekiwaniu na zdarzenia, działa wyłącznie wewnątrz funkcji oznaczonej jako async. Funkcja zostaje zawieszona do momentu przygotowania kolejnej wartości.

Future<void> show(Stream<int> s) async {
  await for (final n in s) print(n);
}

Strumień do nasłuchiwania

Można szybko utworzyć strumień za pomocą Stream.fromIterable. Emituje on kolejne elementy listy w odpowiedniej kolejności, dzięki czemu doskonale nadaje się do wypróbowania await for.

final stream = Stream.fromIterable([1, 2, 3]);

Iterowanie po zdarzeniach

Po połączeniu tego strumienia z await for pętla wykona się raz dla każdej wyemitowanej wartości. W tym przykładzie wypisze kolejno 1, 2 i 3.

await for (final n in Stream.fromIterable([1, 2, 3])) {
  print(n);
}

Oczekiwanie między zdarzeniami

Rzeczywiste strumienie często robią przerwy między zdarzeniami. Dzięki await for kod po prostu czeka w tych przerwach i wznawia działanie natychmiast po nadejściu kolejnej wartości. ⏳

final ticks = Stream.periodic(
    Duration(seconds: 1), (i) => i);

Pętla kończy się naturalnie

Po zakończeniu wysyłania zdarzeń strumień wysyła sygnał done. Pętla await for kończy się samoczynnie, a funkcja wykonuje kod znajdujący się za nią.

await for (final n in finiteStream) print(n);
print('Stream finished');

Błędy docierają do pętli

Jeśli strumień wyemituje error, ten błąd zostanie zgłoszony dokładnie w wierszu await for. Pętlę można umieścić w bloku try/catch, aby obsłużyć błąd w kontrolowany sposób.

try {
  await for (final n in maybeFails) print(n);
} catch (e) {
  print('Caught: $e');
}

break anuluje nasłuchiwanie

Użycie break wewnątrz await for zatrzymuje pętlę i po cichu anuluje subskrypcję strumienia. Pozostałe zdarzenia strumienia nie będą już odbierane.

await for (final n in stream) {
  if (n > 100) break;
}

Jeden odbiorca naraz

Pętla await for subskrybuje strumień z pojedynczą subskrypcją. Taki strumień można odczytać tylko raz, więc druga pętla iterująca po nim zgłosiłaby błąd.

Szybki test

Sprawdź swoją wiedzę o await for.

Podsumowanie

Dowiedzieli się Państwo, że obiekt Stream dostarcza wiele wartości w czasie, a await for odczytuje je po kolei wewnątrz funkcji async aż do sygnału done. Świetna praca! 🎉

Często zadawane pytania

Czy lekcja „Nasłuchiwanie za pomocą await for” jest bezpłatna?

Tak — pełny tekst „Nasłuchiwanie za pomocą await for” 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 „Nasłuchiwanie za pomocą await for”?

Odczytywanie zdarzeń w miarę ich nadejścia Ć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 „Nasłuchiwanie za pomocą await for”?

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. Nasłuchiwanie za pomocą await for
  2. Strumienie pojedyncze a rozgłoszeniowe
  3. Transformowanie strumieni: map, where, take
  4. Tworzenie strumieni za pomocą async*
← Powrót do Dart Academy