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:
- Yürütme
awaitile satıra ulaştığında, mevcut fonksiyon duraklatılır. - 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.
awaitile referans verilenFuturetamamlandığı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.- Eğer
Futurebaşarıyla tamamlandıysa,Futuretarafından döndürülen değer,awaitifadesinin sonucu olur. - Eğer
Futurehata ile sonuçlandıysa (bir istisna fırlattıysa), bu istisnaawaitç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.