CodeBlanks Logo Icon CodeBlanks

Future zincirleme

.then ve .catchError ile Future zincirleme öğrenirsin.

then ve catchError

.then ve .catchError ile bir Future'in sonuçunu veya hatasını yakalarsın. .then Future başarıyla tamamlandığında çalışır; .catchError hata fırlatıldığında.

Örnek: Future.value(10).then((v) => print(v)).catchError((e) => print(e));. Burada .then 10 değerini alır ve yazdırır. Hata olsaydı .catchError çalışırdı.

Bu metotlar zincirlenebilir; her .then bir sonrakinin girdisi olur. await'e alternatiftir; bazı durumlarda daha uygundur.

Zincirleme

.then ve .catchError zincirlenerek kullanılır. Her .then yeni bir Future döndürür; bir sonraki .then onun sonuçunu alır. Böylece veri akışı boru hattı gibi işler.

Örnek: Future.value(10).then((v) => v * 2).then((v) => print(v));. İlk .then 10'u 20'ye çevirir; ikinci .then 20'yi yazdırır. Çıktı: 20.

Zincirde herhangi bir adımda hata olursa, sonraki .catchError yakalar. Bu, hata yönetimini merkezileştirir.

Uygulama then ile sonuç yazdır

void main() async zaten yazılı. Future.value(10) oluştur. .then((v) => print('Sonuç: $v')) ekle. .catchError((e) => print('Hata: $e')) ekle. Tüm zinciri await ile bekle.

Başlangıç kodu

main.dart
void main() async {
  // Future ile 10 değeri üret, .then ile yazdır, .catchError ile hata yakala
  // await ile zincirin tamamlanmasını bekle
}

Örnek çözüm

main.dart
void main() async {
  await Future.value(10)
    .then((v) => print('Sonuç: $v'))
    .catchError((e) => print('Hata: $e'));
}

Beklenen çıktı

Sonuç: 10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 then/catchError parçalarını eşleştir

Kavram Anlamı
.then((v) => ...) Başarı işleyici
.catchError((e) => ...) Hata işleyici
v Sonuç değeri
e Hata nesnesi

2 catchError ne zaman çalışır?

main.dart
Future.value(10)
  .then((v) => print(v))
  .catchError((e) => print(e));
  • Future başarıyla tamamlanırsa
  • Asla
  • Her zaman
  • Future hata fırlatırsa Doğru cevap

Açıklama: catchError yalnızca Future hata fırlattığında çalışır.

3 then çağrısı

Soru
Future.value(10)
  ____((v) => print('Sonuç: $v'))
  .catchError((e) => print('Hata: $e'));
Cevap
Future.value(10)
  then((v) => print('Sonuç: $v'))
  .catchError((e) => print('Hata: $e'));

Açıklama: then başarı işleyicisidir.

Orta seviye bölümündeki tüm dersler