Sobes.tech
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:

  1. İcra await ilə yazılmış sətirə çatdıqda, cari funksiya dayandırılır.
  2. 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.
  3. await ilə istinad olunan Future tamamlandı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.
  4. Əgər Future uğurla tamamlanıbsa, Future tərəfindən qaytarılan dəyər await ifadəsinin nəticəsi olur.
  5. Əgər Future səhvlə tamamlanıbsa (istisna atıbsa), bu istisna await ç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.