Future scheduler
- Dart kursu
- İleri seviye
- Ders 9/83
- 5 dk
Future ve scheduler ilişkisini öğrenirsin.
Future scheduler
Future'lar birer zamanlayıcı nesnedir. Future.value(x) bir microtask olarak x'le çözülür; Future.sync(fn) hemen fn'yi çağırıp sonuçu verir; Future.delayed(d, fn) d süresi sonunda fn'yi event olarak zamanlar.
Tamamlanan bir Future event kuyruğuna bir görev ekler; bu görev await eden kodu devam ettirir. await olmasa bile Future zamanlanır — sadece sonuçu bekleyen olmaz.
Örnek: var f = Future.value(42); Future hemen zamanlanır; await f ile sonuçu alırsın.
Future.value zamanlaması
Future.value(x) tamamlandığında bir microtask olarak zamanlanır. Yani Future'ı oluşturduktan sonra aynı turda sonuçu alamazsın; en az bir microtask turu geçmesi gerekir.
Örnek: var f = Future.value(42); print('a'); var v = await f; print(v);. Sıra: 'a' yazdırılır (senkron), sonra await microtask'ı bekler, microtask 42 üretir, v=42 olur, 42 yazdırılır.
Bu sıralama deterministiktir: 'a' önce, 42 sonra.
Uygulama Future.value zamanlamasını gözle
main'i async yap. var f = Future.value(42); ekle. print('a'); ekle. var v = await f; ve print(v); ekle.
Başlangıç kodu
void main() {
// async yap; 42 ile çözülen Future oluştur; 'a' yazdır; await ile değeri al ve yazdır
}Örnek çözüm
void main() async {
var f = Future.value(42);
print('a');
var v = await f;
print(v);
}Beklenen çıktı
a 42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Future kurucularını eşleştir
| Kavram | Anlamı |
|---|---|
Future.value |
Microtask ile çözülür |
Future.sync |
Hemen çağırır |
Future.delayed |
Süre sonunda event |
Future.error |
Hata ile çözülür |
2 Future.value ne zaman çözülür?
- Bir microtask türündan sonra Doğru cevap
- Yalnızca Isolate'de
- Sadece await ile
- Hemen, aynı satırda
Açıklama: Future.value bir microtask türündan sonra çözülür.
3 Future.value çağrısı
var f = Future.____(42);
var f = Future.value(42);
Açıklama: Future.value(42) 42 ile çözülen bir Future oluşturur.