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.