then
- Dart kursu
- Başlangıç
- Ders 108/116
- 5 dk
.then ile Future zincirleme öğrenirsin.
then
Bir Future tamamlandığında ne yapılacağını .then ile belirtirsin. .then bir geri çağrı (callback) alır; Future değerle tamamlandığında bu çağrı çalışır ve değeri alır. Future.value(5).then((v) => print(v));.
Birden çok .then zincirlenebilir; her biri bir sonrakının girdisi olur. Future.value(5).then((v) => v * 2).then((v) => print(v)); sonuçu 10 yazdırır. Bu, bir veriyi adım adım dönüştürmenin deyimsel yoludur. async/await daha okunur olsa da, .then hala çok kullanılır; özellikle kısa zincirlerde.
Zincirleme then
Birden çok .then çağrısı yan yana yazıldığında bir zincir oluşur. İlk .then Future'ın değerini alır, dönüş değeri bir sonraki .then'e geçer. Bu, ardışık dönüştürmeler için idealdir.
Örnek: Future.value(3).then((v) => v + 1).then((v) => v * 10).then((v) => print(v));. Çıktı 40'tır. Her .then yeni bir Future döndürür; bu yüzden zincir bir Future'lar serisidir. Bir adımda hata fırlatılırsa, zincirin geri kalı atlanır ve .catchError'a gider. Hata yönetimini bir sonraki derste göreceğiz.
Uygulama Sıra sende: then zinciri
Future.value(5) ile başla. .then((v) => v * 2) ile değeri ikiye katla, sonra .then((v) => print(v)) ile yazdır. Böylece iki adımlı bir then zinciri kurarsın.
Başlangıç kodu
void main() {
// Bir değer Future'ı ile başla
// .then ile ikiye katla
// .then ile yazdır
}Örnek çözüm
void main() {
Future.value(5).then((v) => v * 2).then((v) => print(v));
}Beklenen çıktı
10
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 then eşleştir
| Kavram | Anlamı |
|---|---|
.then |
tamamlanınca çalışır |
(v) => v * 2 |
değeri dönüştürür |
zincirleme |
adım adım işler |
callback |
geri çağrı |
2 then callback
Future.value(5).____((v) => print(v));
Future.value(5).then((v) => print(v));
Açıklama: then ile tamamlanma callback'i verilir.
3 Future.value(3).then((v) => v + 1).then((v) => print(v)) ne yazdırır?
Future.value(3)
.then((v) => v + 1)
.then((v) => print(v));- 1 Doğru cevap
- 3
- 4
- 7
Açıklama: İlk then 3'ü 4 yapar, ikinci then 4'ü yazdırır; sonuç 4.