Sobes.tech
Middle

Neden asenkron fonksiyon belirtilen tipi hemen geri döndürmüyor?

sobes.tech yapay zeka

AI'dan gelen yanıt

Flutter/Dart'ta asenkron bir fonksiyon, belirtilen türü hemen döndürmez çünkü zaman alabilecek bir işlemi gerçekleştirir (örneğin, ağ isteği, dosya okuma). İşlem tamamlanana kadar yürütme akışını engellemek yerine, asenkron fonksiyon hemen bir Future döndürür.

Future, gelecekte erişilebilir olacak potansiyel bir değer veya hata temsil eden bir nesnedir. Bu, işlemin tamamlanacağına dair bir söz gibi çalışır ve tamamlandığında, sonuç ya belirtilen türde bir değer ya da bir hata olur.

Future kullanımı, ana yürütme akışının (ana izolasyon) diğer görevleri işlemeye devam etmesine olanak tanır, asenkron işlemin tamamlanmasını beklemeden. İşlem tamamlandığında, Future bunu bildirir ve kaydedilen kod (örneğin, .then() veya await aracılığıyla) sonucu işleyebilir.

Örnek:

Future<String> fetchData() async {
  // Uzun süren bir işlemin simülasyonu
  await Future.delayed(Duration(seconds: 2));
  return "Veriler alındı!";
}

void main() {
  print("Başlangıç");
  fetchData().then((data) {
    print(data); // Future tamamlandıktan sonra çalışır
  });
  print("Son"); // Anında çalışır, fetchData'yi beklemez
}

Bu kodun çıktısı:

Başlangıç
Son
Veriler alındı!

Bu, engelleyici olmayan bir davranışı gösterir. Eğer fetchData hemen bir String döndürseydi, program 2 saniye boyunca durur ve "Son" yazdırılmadan önce engellenirdi. Future, böyle bir engellemeyi önlemeye olanak tanır.