Future.wait i praca równoległa
Równoczesne uruchamianie wielu future
Future.wait i praca równoległa to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 4 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.
Oczekiwanie po kolei jest powolne
Oczekiwanie na Future po kolei sprawia, że każdy musi czekać na poprzedni. Trzy wywołania trwające po jednej sekundzie zajmą więc łącznie trzy sekundy.
Uruchamianie ich razem
Najpierw proszę uruchomić niezależne wywołania asynchroniczne, a dopiero potem na nie czekać. Działają one współbieżnie, więc całkowity czas zależy od najwolniejszego wywołania, a nie od ich sumy.
Poznajemy Future.wait
Future.wait przyjmuje listę obiektów Future i zwraca jeden Future, który kończy się dopiero po zakończeniu wszystkich.
final results = await Future.wait([a(), b(), c()]);Wyniki zachowują kolejność
Future.wait zwraca listę wyników w tej samej kolejności co wejściowe obiekty Future, niezależnie od tego, który zakończył się pierwszy.
final list = await Future.wait([one(), two()]);
print(list[0]); // result of one()Rzeczywista oszczędność czasu
Trzy równoległe obiekty Future trwające po jednej sekundzie kończą się razem po około jednej sekundzie, ponieważ Future.wait nakłada na siebie czas oczekiwania.
Gdy jeden zawiedzie
Domyślnie, jeśli którykolwiek Future zakończy się błędem, Future.wait natychmiast kończy się tym błędem, nawet jeśli pozostałe nadal działają.
Kontynuowanie za pomocą eagerError
Proszę przekazać eagerError: false, aby Future.wait zaczekał na zakończenie każdego Future przed zgłoszeniem pierwszego napotkanego błędu.
await Future.wait(tasks, eagerError: false);Wyścig z Future.any
Potrzebują Państwo tylko najszybszego wyniku? Future.any kończy się, gdy tylko pierwszy Future z listy zakończy się powodzeniem.
final fastest = await Future.any([mirrorA(), mirrorB()]);Tworzenie listy
Typowy wzorzec polega na użyciu map dla danych wejściowych w celu utworzenia listy Future, a następnie przekazaniu jej bezpośrednio do Future.wait.
await Future.wait(ids.map(fetchUser));Współbieżność, nie równoległe wątki
To jest współbieżność w jednym isolate: pętla zdarzeń przeplata oczekiwanie. W przypadku pracy obciążającej procesor należy użyć isolate.
Kiedy używać poszczególnych rozwiązań
Proszę użyć Future.wait, gdy potrzebne są wszystkie wyniki, a Future.any, gdy potrzebny jest tylko pierwszy, który nadejdzie. ⚖️
Szybkie sprawdzenie
Szybkie sprawdzenie jednoczesnego uruchamiania Future.
Podsumowanie: równoległe Future
Dowiedzieli się Państwo, jak nakładać na siebie pracę asynchroniczną za pomocą Future.wait, aby uzyskać wszystkie wyniki, używać Future.any do pobierania najszybszego wyniku oraz rozumieć działanie błędów. 🏁
Często zadawane pytania
Czy lekcja „Future.wait i praca równoległa” jest bezpłatna?
Tak — pełny tekst „Future.wait i praca równoległa” 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 „Future.wait i praca równoległa”?
Równoczesne uruchamianie wielu future Ć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 4 z 4.
Ile czasu zajmuje lekcja „Future.wait i praca równoległa”?
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