Sobes.tech
Junior

Flutter'da asinxron dasturlashda await kalit so'zi qanday ishlaydi?

sobes.tech AI

AIdan javob

await soʻzi async kalit soʻzi bilan belgilangan asinxron funksiyalarda ishlatiladi, funksiyaning bajarilishini Future tugaguncha toʻxtatadi va natijani qaytaradi.

Ishlash prinsipi:

  1. Bajarilish await bilan yozilgan satrga yetganda, joriy funksiya toʻxtatiladi.
  2. Boshqaruv chaqiruvchiga (yoki voqealar tsikliga) qaytariladi, bu esa dasturning boshqa qismlarini bajarilishiga imkon beradi. Bu UI ning bloklanishini oldini oladi.
  3. await bilan murojaat qilinayotgan Future tugagach (ya'ni, uning asinxron operatsiyasi bajarilib, qiymat yoki istisno qaytarilganda), toʻxtatilgan funksiya toʻxtatilgan joydan davom etadi.
  4. Agar Future muvaffaqiyatli tugagan bo‘lsa, Future tomonidan qaytarilgan qiymat await ifodasining natijasi bo‘ladi.
  5. Agar Future xatolik bilan tugagan bo‘lsa (istisno chiqarilgan bo‘lsa), bu istisno await chaqirilgan joyda chiqariladi.

Misol:

// async bilan belgilangan asinxron funksiya
Future<String> fetchData() async {
  // Asinxron operatsiyaning simulyatsiyasi (masalan, tarmoq so‘rovi)
  await Future.delayed(Duration(seconds: 2));
  return 'Tarmoqdan olingan ma’lumotlar!';
}

void main() async {
  print('Ma’lumotlarni olish boshlanishi...');

  // `await` yordamida Future tugashini kutish
  try {
    String data = await fetchData();
    print('Olingan: $data');
  } catch (e) {
    print('Ma’lumotlarni olishda xato: $e');
  }

  print('Dastur tugadi (garchi await hali ham bajarilayotgan bo‘lsa ham)');
}

Ushbu misolda, main async bilan belgilangan, shuning uchun await ishlatilishi mumkin. await fetchData() chaqiruvi main funksiyasining bajarilishini 2 sekundga toʻxtatadi, asosiy UI oqimini bloklamasdan. fetchData kutayotgan paytda, dasturning boshqa qismlari ishlashda davom etishi mumkin. fetchData tugagach, main bajarilishi davom etadi va data o‘zgaruvchisiga qaytarilgan qiymat tayinlanadi.