Junior
Flutterдеги асинхрон программалоодо await ачкыч сөзү кандай иштейт?
sobes.tech AI
AIден жооп
await ачкыч сөзү асинхрондуу функцияларда (аны async ачкыч сөзү менен белгилегенде) колдонулат, функциянын иштөөсүн токтотуп, ал Future аяктап, натыйжасын кайтарганга чейин күтүүгө мүмкүндүк берет.
Ишке ашыруу принциби:
awaitменен коштолгон сапка жеткенде, учурдагы функция токтоп калат.- Башка программа бөлүктөрү иштей бериши үчүн башкаруу чакырган кодго (же event loop) кайтарылат. Бул UI блоктогонду алдын алат.
awaitменен шилтемелегенFutureаяктагандан кийин (анын асинхрондуу операциясы аяктап, маанисин кайтарганда же исключениени чыгарганда), токтогон функция кайра башталат ошол жерден, кайсы жерде токтогон болсо.- Эгер
Futureийгиликтүү аяктагыс,Futureкайтарган маанисиawaitвыражениесинин натыйжасы болот. - Эгер
Futureката менен аяктагыс (исключение чыгарса), ал исключениеawaitчакырган жерге чыгат.
Мисал:
// `async` белгиленген асинхрондуу функция
Future<String> fetchData() async {
// Асинхрондуу операцияны имитациялоо (мисалы, тармактык суроо)
await Future.delayed(Duration(seconds: 2));
return 'Желиден алынган маалымат!';
}
void main() async {
print('Маалыматты алуу башталды...');
// `await` колдонуу менен `Future` аяктоосун күтүү
try {
String data = await fetchData();
print('Алыныптыр: $data');
} catch (e) {
print('Маалымат алууда ката: $e');
}
print('Программа аяктады (эми дагы `await` иштеп жатышы мүмкүн)');
}
Бул мисалда main async деп белгиленген, await колдонуу үчүн. await fetchData() main ишин 2 секундга токтотот, негизги UI агымын блоктабай. fetchData күтүп жатканда, башка бөлүктөр иштей берет. fetchData аяктагандан кийин, main кайра уланат жана data өзгөрмөсүнө кайтарылган мааниси берилет.