Sobes.tech
Middle

¿Por qué la función asíncrona no devuelve inmediatamente el tipo especificado?

sobes.tech AI

Respuesta de la IA

Una función asíncrona en Flutter/Dart no devuelve inmediatamente el tipo especificado porque realiza una operación que puede tomar tiempo (por ejemplo, una solicitud de red, lectura de un archivo). En lugar de bloquear el hilo de ejecución hasta que la operación termine, la función asíncrona devuelve inmediatamente un Future.

Future es un objeto que representa un valor potencial o un error que estará disponible en el futuro. Funciona como una promesa de que la operación se completará, y una vez que eso suceda, el resultado será ya sea el valor del tipo especificado o un error.

El uso de Future permite que el hilo principal de ejecución (el aislamiento principal) continúe procesando otras tareas sin esperar a que finalice la operación asíncrona. Cuando la operación termina, Future notifica esto, y el código registrado (por ejemplo, a través de .then() o await) puede manejar el resultado.

Ejemplo:

Future<String> fetchData() async {
  // Simulación de una operación larga
  await Future.delayed(Duration(seconds: 2));
  return "¡Datos recibidos!";
}

void main() {
  print("Inicio");
  fetchData().then((data) {
    print(data); // Se ejecuta después de que Future finaliza
  });
  print("Fin"); // Se ejecuta inmediatamente, sin esperar a fetchData
}

La salida de este código será:

Inicio
Fin
¡Datos recibidos!

Esto demuestra un comportamiento no bloqueante. Si fetchData devolviera un String directamente, el programa se bloquearía durante 2 segundos antes de imprimir "Fin". Future permite evitar ese bloqueo.