Junior
Kako funkcioniše ključna reč await u asinhronom programiranju na Flutteru?
sobes.tech АИ
Одговор од АИ
Ključna reč await se koristi u asinhronim funkcijama (označenim ključnom rečju async) za zaustavljanje izvršenja funkcije dok se Future ne završi i ne vrati rezultat.
Princip rada:
- Kada izvršenje dođe do reda sa
await, trenutna funkcija se pauzira. - Kontrola se vraća pozivajućem kodu (ili event loop-u), omogućavajući drugim delovima programa da se izvršavaju. Ovo sprečava blokiranje UI-ja.
- Kada se
Future, na koji se odnosiawait, završi (tj. izvrši svoju asinhronu operaciju i vrati vrednost ili baci izuzetak), pauzirana funkcija se nastavlja od mesta gde je prekinuta. - Ako je
Futureuspešno završen, vrednost kojuFuturevraća postaje rezultat izrazaawait. - Ako je
Futurezavršio sa greškom (bacio izuzetak), taj izuzetak će biti bačen na mestu gde je pozvanawait.
Primer:
// Asinhrona funkcija označena sa `async`
Future<String> fetchData() async {
// Simulacija asinhrone operacije (npr. mrežni zahtev)
await Future.delayed(Duration(seconds: 2));
return 'Podaci sa mreže!';
}
void main() async {
print('Početak dobijanja podataka...');
// Korišćenje `await` za čekanje završetka Future
try {
String data = await fetchData();
print('Primljeno: $data');
} catch (e) {
print('Greška pri dobijanju podataka: $e');
}
print('Program je završio (iako `await` još može biti u toku)');
}
U ovom primeru, main je označena kao async da bi mogla koristiti await. Poziv await fetchData() zaustavlja izvršenje main na 2 sekunde, ne blokirajući glavni UI nit. Dok fetchData čeka, ostali delovi aplikacije mogu nastaviti sa radom. Kada fetchData završi, izvršenje main se nastavlja, i promenljiva data dobija vraćenu vrednost.