Sobes.tech
Middle

Zašto asinhrona funkcija odmah ne vraća naveden tip?

sobes.tech АИ

Одговор од АИ

Asinhrona funkcija u Flutter/Dart ne vraća odmah navršeni tip jer izvršava operaciju koja može potrajati vreme (npr. mrežni zahtev, čitanje fajla). Umesto da blokira tok izvršenja dok se operacija ne završi, asinhrona funkcija odmah vraća Future.

Future je objekat koji predstavlja potencijalnu vrednost ili grešku koja će biti dostupna u budućnosti. On deluje kao obećanje da će operacija biti završena, i čim se to dogodi, rezultat će biti ili vrednost navedenog tipa ili greška.

Korišćenjem Future omogućava se glavnom toku izvršenja (glavnom izolatu) da nastavi sa obradom drugih zadataka, ne čekajući završetak asinhrone operacije. Kada se operacija završi, Future o tome obaveštava, i registrovani kod (npr. putem .then() ili await) može obraditi rezultat.

Primer:

Future<String> fetchData() async {
  // Simulacija duge operacije
  await Future.delayed(Duration(seconds: 2));
  return "Podaci primljeni!";
}

void main() {
  print("Početak");
  fetchData().then((data) {
    print(data); // Izvršiće se nakon završetka Future
  });
  print("Kraj"); // Izvršava se odmah, bez čekanja fetchData
}

Izlaz ovog koda biće:

Početak
Kraj
Podaci primljeni!

Ovo demonstrira neblokirajuće ponašanje. Ako bi fetchData odmah vraćao String, program bi se blokirao na 2 sekunde pre nego što odštampa "Kraj". Future omogućava izbegavanje takvog blokiranja.