CodeBlanks Logo Icon CodeBlanks

Future scheduler

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

main.dart
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

main.dart
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ı

Soru
var f = Future.____(42);
Cevap
var f = Future.value(42);

Açıklama: Future.value(42) 42 ile çözülen bir Future oluşturur.

İleri seviye bölümündeki tüm dersler