Junior
Kā darbojas atslēgas vārds await asinhronajā programmēšanā Flutter?
sobes.tech AI
Atbilde no AI
Atslēgvārds await tiek izmantots asinhronās funkcijās (iezīmēts ar atslēgvārdu async), lai pārtrauktu funkcijas izpildi līdz brīdim, kad Future pabeigsies un atgriezīs rezultātu.
Darba princips:
- Kad tiek sasniegta rinda ar
await, pašreizējā funkcija tiek pārtraukta. - Kontrole tiek atgriezta izsaucējam (vai notikumu cilpai), ļaujot citām programmas daļām darboties. Tas novērš UI bloķēšanu.
- Kad
Future, uz kuru norādaawait, pabeidz (t.i., veic savu asinhrono operāciju un atgriež vērtību vai izmet izņēmumu), pārtraukta funkcijas izpilde tiek atsākta no vietas, kur tā tika pārtraukta. - Ja
Futureir veiksmīgi pabeigts,Futureatgrieztais vērtība kļūst parawaitizteiksmes rezultātu. - Ja
Futurepabeidzas ar kļūdu (izmetot izņēmumu), šis izņēmums tiks izsviests vietā, kur tika izsauktsawait.
Piemērs:
// Asinhrona funkcija ar `async`
Future<String> fetchData() async {
// Asinhronas operācijas imitācija (piemēram, tīkla pieprasījums)
await Future.delayed(Duration(seconds: 2));
return 'Dati no tīkla!';
}
void main() async {
print('Datu saņemšanas sākums...');
// Izmantojot `await`, gaidām `Future` pabeigšanu
try {
String data = await fetchData();
print('Saņemts: $data');
} catch (e) {
print('Kļūda datu saņemšanā: $e');
}
print('Programma pabeigta (lai gan `await` vēl var darboties)');
}
Šajā piemērā main ir iezīmēta kā async, lai varētu izmantot await. await fetchData() pārtrauc main darbību uz 2 sekundēm, neblokējot galveno UI plūsmu. Kamēr fetchData gaida, citas programmas daļas var darboties. Kad fetchData pabeidzas, main atsāk darbu, un mainīgajam data tiek piešķirta atgriezta vērtība.