Future zincirleme
- Dart kursu
- Orta seviye
- Ders 60/116
- 5 dk
.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
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
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?
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ı
Future.value(10)
____((v) => print('Sonuç: $v'))
.catchError((e) => print('Hata: $e'));
Future.value(10)
then((v) => print('Sonuç: $v'))
.catchError((e) => print('Hata: $e'));
Açıklama: then başarı işleyicisidir.