Sobes.tech
Junior

Flutter'da asenkron programlamada await anahtar kelimesi nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Anahtar kelime await, async anahtar kelimesi ile işaretlenmiş asenkron fonksiyonlarda, Future tamamlanana ve sonuç döndürünceye kadar fonksiyonun yürütülmesini durdurmak için kullanılır.

Çalışma prensibi:

  1. Yürütme await ile satıra ulaştığında, mevcut fonksiyon duraklatılır.
  2. Kontrol, çağıran koda (veya olay döngüsüne) geri döner, böylece programın diğer bölümleri çalışmaya devam edebilir. Bu, UI'nin kilitlenmesini önler.
  3. await ile referans verilen Future tamamlandığında (yani, kendi asenkron işlemini gerçekleştirip bir değer döndürdüğünde veya istisna fırlattığında), askıya alınmış fonksiyon, kesildiği yerden devam eder.
  4. Eğer Future başarıyla tamamlandıysa, Future tarafından döndürülen değer, await ifadesinin sonucu olur.
  5. Eğer Future hata ile sonuçlandıysa (bir istisna fırlattıysa), bu istisna await çağrıldığı yerde fırlatılır.

Örnek:

// async ile işaretlenmiş asenkron fonksiyon
Future<String> fetchData() async {
  // Asenkron bir işlemin simülasyonu (örneğin, ağ isteği)
  await Future.delayed(Duration(seconds: 2));
  return 'Ağdan alınan veriler!';
}

void main() async {
  print('Veri alınmaya başlandı...');

  // `await` kullanarak Future'ın tamamlanmasını bekleme
  try {
    String data = await fetchData();
    print('Alınan: $data');
  } catch (e) {
    print('Veri alınırken hata: $e');
  }

  print('Program tamamlandı (hâlâ await çalışmaya devam edebilir)');
}

Bu örnekte, main fonksiyonu async olarak işaretlenmiştir, böylece await kullanılabilir. await fetchData() çağrısı, main fonksiyonunun yürütülmesini 2 saniye duraklatır, ana UI akışını engellemeden. fetchData beklerken, uygulamanın diğer bölümleri çalışmaya devam edebilir. fetchData tamamlandığında, main yürütülmeye devam eder ve data değişkenine dönen değer atanır.