Junior
¿Cómo funciona la palabra clave await en la programación asíncrona en Flutter?
sobes.tech AI
Respuesta de la IA
La palabra clave await se usa en funciones asíncronas (marcadas con la palabra clave async) para pausar la ejecución de la función hasta que el Future se complete y devuelva un resultado.
Principio de funcionamiento:
- Cuando la ejecución llega a la línea con
await, la función actual se pausa. - El control vuelve al código que llamó (o al bucle de eventos), permitiendo que otras partes del programa se ejecuten. Esto evita bloquear la interfaz de usuario.
- Cuando el
Futureal que hace referenciaawaitse completa (es decir, realiza su operación asíncrona y devuelve un valor o lanza una excepción), la función suspendida se reanuda desde donde fue interrumpida. - Si el
Futurese completó con éxito, el valor devuelto por elFuturese convierte en el resultado de la expresiónawait. - Si el
Futureterminó con un error (lanzó una excepción), esa excepción se lanzará en el lugar donde se llamó aawait.
Ejemplo:
// Función asíncrona marcada con async
Future<String> fetchData() async {
// Simulación de operación asíncrona (por ejemplo, una solicitud de red)
await Future.delayed(Duration(seconds: 2));
return '¡Datos recibidos de la red!';
}
void main() async {
print('Inicio de obtención de datos...');
// Uso de await para esperar la finalización del Future
try {
String data = await fetchData();
print('Recibido: $data');
} catch (e) {
print('Error al obtener datos: $e');
}
print('La programación ha terminado (aunque await aún puede estar en ejecución)');
}
En este ejemplo, main está marcada como async para poder usar await. La llamada a await fetchData() pausa la ejecución de main durante 2 segundos, sin bloquear el hilo principal de la interfaz de usuario. Mientras fetchData espera, otras partes de la aplicación pueden seguir funcionando. Cuando fetchData termina, la ejecución de main se reanuda, y la variable data recibe el valor devuelto.