Future
- Dart kursu
- Başlangıç
- Ders 106/116
- 5 dk
Future ile asenkron işlemi öğrenirsin.
Future
Bir Future, henüz tamamlanmamış bir işlemin sonuçunu temsil eder. Asenkron bir işlem başlatılır ve sonuç daha sonra gelir. Örneğin ağ çağrısı, dosya okuma ya da zamanlayıcı. Future<int> ileride bir int değeri taşıyacak olan Future'dır.
Bir Future üç durumdan birinde bulunur: pending (beklemede), completed (tamamlandı, değerle) veya errored (hata ile bitti). Future.value(42) hemen 42 değeriyle tamamlanan bir Future yaratır. Future.delayed(Duration(seconds: 1), () => 42) 1 saniye sonra tamamlanır. Sonucu beklemek için then veya await kullanılır; bir sonraki derste göreceğiz.
Future oluştur
En basit Future, Future.value(...) ile yaratılır. Hemen tamamlanır ve verdiğin değeri taşır. final f = Future.value("hazır");. Bu, asenkron bir işlemin sonuçunu taklit etmek için kullanışlıdır. Future.error(Exception("hata")) ise hata ile biten bir Future yaratır.
Gecikmeli bir Future için Future.delayed kullanılır. Future.delayed(Duration(milliseconds: 100), () => 42) 100 ms sonra 42 ile tamamlanır. Duration sınıfı zaman aralığını taşır; saniye, milisaniye, dakika gibi birimlerle. Sonuç geldiğinde ne yapılacağını bir sonraki adımda göreceğiz. Henüz değerini almıyoruz; Future nesnesini tutuyoruz.
Uygulama Sıra sende: Future ve then
Future.value(42) ile bir Future oluştur. .then((v) => print(v)) ile değerini yazdır. Böylece Future tamamlandığında değer ekrana gelir.
Başlangıç kodu
void main() {
// Bir değer Future'ı oluştur
// tamamlandığında değerini yazdır
}Örnek çözüm
void main() {
Future.value(42).then((v) => print(v));
}Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Future<T> neyi temsil eder?
Future<int> f = Future.value(42);- Bir hata nesnesi
- Şimdiki bir T değeri
- İleride gelecek bir T değeri Doğru cevap
- Bir döngüyü
Açıklama: Future<T> ileride bir T değeri taşır.
2 Future.value
final f = ____.value(42);
final f = Future.value(42);
Açıklama: Future.value anında tamamlanan Future yaratır.
3 Future eşleştir
| Kavram | Anlamı |
|---|---|
Future<T> |
ileride bir T değeri |
Future.value |
anında tamamlanır |
Future.delayed |
gecikmeli tamamlanır |
pending |
henüz bitmemiş durum |