Dart
Future.wait
Future.wait ile paralel Future'ları öğrenirsin.
Future.wait
Birden çok Future'ı paralel başlatıp hepsinin bitmesini beklemek için Future.wait kullanılır. Bir Future listesi alır ve hepsi tamamlandığında değerlerin listesini döndürür. Paralel çalışma, sıralı await'ten çok daha hızlıdır.
Örnek: final sonuç = await Future.wait([Future.value(1), Future.value(2), Future.value(3)]);. sonuç bir List<int>'tir ve [1, 2, 3] içerir. Üç Future paralel çalışır; hepsi bitince Future.wait tamamlanır. Bir Future hata verirse Future.wait de hata ile biter. async işlevde await ile beklenir; .then ile de zincirlenebilir.
Uygulama Sıra sende: paralel bekle
Future<void> main() async işaretle. final sonuç = await Future.wait([Future.value(1), Future.value(2), Future.value(3)]); ile üç paralel Future'ı bekle. Sonra print(sonuç) ile listeyi yazdır.
Örnek çözümü göster
Future<void> main() async {
final sonuç = await Future.wait([Future.value(1), Future.value(2), Future.value(3)]);
print(sonuç);
}
Paralel ve sıralı farkı
Üç Future'ı sırayla await edersen toplam süre üçünün süresi toplamı kadar olur. Future.wait ile paralel başlatırsan en yavaşın süresi kadar olur. Üç Future da 1 saniye sürüyorsa sıralı 3 saniye, paralel 1 saniye sürer.
Bu yüzden bağımsız işleri paralel yapmak iyi bir alışkanlıktır. Ama dikkat: birbirine bağlı işleri paralel yapamazsın; ikincisi birincinin sonuçunu bekliyorsa sıralı gitmek gerekir. Future.wait içinde her Future'ın türü aynı olmalı; farklı türler için ortak bir üst tür kullanılır. Hata yönetiminde bir Future hata verirse tüm Future.wait hata verir; eagerError: false ile diğerlerinin bitmesini bekleyebilirsin.
Kendini test et
-
Future.wait
final sonuç = await ____([Future.value(1), Future.value(2)]);
Cevabı göster
final sonuç = await Future.wait([Future.value(1), Future.value(2)]);
-
Üç bağımsız Future'ı beklemenın en hızlı yolu?
final a = await Future.wait([
Future.value(1),
Future.value(2),
Future.value(3),
]);
- Sırayla await
- .then ile zincir
- Future.wait ile paralel
- try/catch
Cevabı göster
Future.wait ile paralel — Future.wait paralel çalışır, en hızlısıdır.
-
Future.wait eşleştir
- Future.wait
- paralel bekler
- List<Future>
- girdi listesi
- List<T>
- çıkış listesi
- eagerError
- hata davranışı
Sıradaki ders: Özet - Async temelleri