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
- Nasłuchiwanie za pomocą await for
- Strumienie pojedyncze a rozgłoszeniowe
- Transformowanie strumieni: map, where, take
- Tworzenie strumieni za pomocą async*