Junior
Flutter-də asinxron proqramlaşdırmada await açar sözü necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
Açar söz await, async açar sözü ilə işarələnmiş asinxron funksiyalarda istifadə olunur və funksiyanın icrasını Future tamamlanana və nəticə qaytarana qədər dayandırır.
İş prinsipi:
- İcra
awaitilə yazılmış sətirə çatdıqda, cari funksiya dayandırılır. - Nəzarət çağıran kod (və ya hadisələr döngüsü) geri qaytarılır, bu da proqramın digər hissələrinin işləməsinə imkan verir. Bu, UI-nin bloklanmasının qarşısını alır.
awaitilə istinad olunanFuturetamamlandıqda (yəni, öz asinxron əməliyyatını yerinə yetirir və dəyər qaytarır və ya istisna atırsa), dayandırılmış funksiya dayandırıldığı yerdən davam edir.- Əgər
Futureuğurla tamamlanıbsa,Futuretərəfindən qaytarılan dəyərawaitifadəsinin nəticəsi olur. - Əgər
Futuresəhvlə tamamlanıbsa (istisna atıbsa), bu istisnaawaitçağırıldığı yerdə atılır.
Nümunə:
// async ilə işarələnmiş asinxron funksiya
Future<String> fetchData() async {
// Asinxron əməliyyatın simulasyonu (məsələn, şəbəkə sorğusu)
await Future.delayed(Duration(seconds: 2));
return 'Şəbəkədən alınan məlumatlar!';
}
void main() async {
print('Məlumatların alınmasına başlanır...');
// `await` istifadə edərək Future-in tamamlanmasını gözləmək
try {
String data = await fetchData();
print('Alınan: $data');
} catch (e) {
print('Məlumatların alınmasında xəta: $e');
}
print('Proqram tamamlandı (hətta await hələ də işləyə bilər)');
}
Bu nümunədə, main async ilə işarələnmişdir ki, await istifadə oluna bilsin. await fetchData() çağırışı main-in icrasını 2 saniyə dayandırır, əsas UI axını bloklamadan. fetchData gözləyərkən, tətbiqin digər hissələri işləməyə davam edə bilər. fetchData tamamlandıqda, main-in icrası davam edir və data dəyişəninə qaytarılmış dəyər təyin edilir.