Sobes.tech
Middle

De ce funcția asincronă nu returnează imediat tipul specificat?

sobes.tech AI

Răspuns de la AI

O funcție asincronă în Flutter/Dart nu returnează imediat tipul specificat deoarece execută o operație care poate dura timp (de exemplu, o solicitare de rețea, citirea unui fișier). În loc să blocheze firul de execuție până la finalizarea operației, funcția asincronă returnează imediat un Future.

Future este un obiect care reprezintă o valoare potențială sau o eroare care va fi disponibilă în viitor. Acționează ca o promisiune că operația va fi finalizată, iar odată ce se întâmplă acest lucru, rezultatul va fi fie valoarea tipului specificat, fie o eroare.

Utilizarea Future permite firului principal de execuție (izolatorul principal) să continue să proceseze alte sarcini fără a aștepta finalizarea operației asincrone. Când operația se încheie, Future notifică acest lucru, iar codul înregistrat (de exemplu, prin .then() sau await) poate procesa rezultatul.

Exemplu:

Future<String> fetchData() async {
  // Simulare a unei operații lungi
  await Future.delayed(Duration(seconds: 2));
  return "Datele au fost primite!";
}

void main() {
  print("Început");
  fetchData().then((data) {
    print(data); // Se va executa după finalizarea Future
  });
  print("Sfârșit"); // Se execută imediat, fără a aștepta fetchData
}

Ieșirea acestui cod va fi:

Început
Sfârșit
Datele au fost primite!

Aceasta demonstrează un comportament non-blocant. Dacă fetchData ar returna imediat un String, programul s-ar bloca timp de 2 secunde înainte de a afișa "Sfârșit". Future permite evitarea acestei blocări.