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:
- Bajarilish
awaitbilan yozilgan satrga yetganda, joriy funksiya toʻxtatiladi. - Boshqaruv chaqiruvchiga (yoki voqealar tsikliga) qaytariladi, bu esa dasturning boshqa qismlarini bajarilishiga imkon beradi. Bu UI ning bloklanishini oldini oladi.
awaitbilan murojaat qilinayotganFuturetugagach (ya'ni, uning asinxron operatsiyasi bajarilib, qiymat yoki istisno qaytarilganda), toʻxtatilgan funksiya toʻxtatilgan joydan davom etadi.- Agar
Futuremuvaffaqiyatli tugagan bo‘lsa,Futuretomonidan qaytarilgan qiymatawaitifodasining natijasi bo‘ladi. - Agar
Futurexatolik bilan tugagan bo‘lsa (istisno chiqarilgan bo‘lsa), bu istisnoawaitchaqirilgan 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.