3.10. Conceptos básicos de Dart: programación asincrónica
Página 28 | Escuchar en audio
La programación asincrónica es un concepto fundamental en Dart, especialmente cuando se trata de crear aplicaciones con Flutter. Antes de profundizar en los detalles, comprendamos qué es la programación asincrónica y por qué es tan importante.
Los programas normalmente se ejecutan sincrónicamente, lo que significa que cada instrucción se ejecuta una tras otra. Sin embargo, algunos procesos pueden tardar más en completarse, como solicitudes de red, lectura de archivos, etc. Durante ese tiempo, el programa se ve obligado a esperar, lo que puede provocar una mala experiencia de usuario, especialmente en aplicaciones móviles donde la fluidez y la capacidad de respuesta son cruciales.
La programación asincrónica resuelve este problema al permitir que el programa continúe realizando otras tareas mientras espera que se complete la larga operación. Esto se hace a través de 'Future' y 'async/await', dos conceptos clave en la programación asincrónica de Dart.
Futuro
En Dart, un 'Futuro' representa un valor o error potencial que estará disponible en algún momento en el futuro. Es similar a 'Promise' en JavaScript. Cuando inicia una operación asíncrona, devuelve un 'Futuro'. Este 'Futuro' se 'completará' cuando se complete la operación o se 'rechazará' si ocurre un error.
Para manejar el resultado de un 'Futuro', puede usar el método 'then()' para especificar qué se debe hacer cuando el 'Futuro' se complete exitosamente, y el método 'catchError()' para manejar cualquier error. Además, puede encadenar varias llamadas 'then()' y 'catchError()', cada una de las cuales devuelve un nuevo 'Futuro'.
Asíncrono/Espera
Aunque 'Future' y sus métodos 'then()' y 'catchError()' son potentes, pueden generar código muy anidado y difícil de leer. Aquí es donde entran en juego 'async' y 'await'.
La palabra clave 'async' se utiliza para declarar una función asincrónica. Dentro de una función 'async', puede usar la palabra clave 'await' antes de una expresión para pausar la ejecución de la función hasta que se complete la expresión. La expresión suele ser una llamada a una función que devuelve un 'Futuro'.
El uso de 'async' y 'await' da como resultado un código más limpio y más fácil de entender, ya que le permite escribir código asincrónico como si fuera síncrono.
Ejemplo
Supongamos que tiene una función 'fetchData()' que devuelve un 'Futuro'. Así es como puedes usar 'Future', 'async' y 'await' para manejar esto:
Futuro<String> obtener datos() { // Simula una operación de red que tarda 2 segundos return Future.delayed(Duración(segundos: 2), () => '¡Hola mundo!'); } vacío principal() asíncrono { print('Obteniendo datos...'); Datos de cadena = esperar fetchData(); print('Fecha: $datos'); }
Cuando ejecuta este código, imprime 'Obteniendo datos...', espera 2 segundos y luego imprime 'Datos: ¡Hola, mundo!'. Durante estos 2 segundos el programa no se bloquea, permitiendo ejecutar otras tareas.
En resumen, la programación asincrónica es un concepto crucial en Dart que le permite escribir aplicaciones fluidas y responsivas. Al utilizar 'Future' y 'async/await', puede realizar operaciones que requieren mucho tiempo, como solicitudes de red, sin bloquear el programa, lo que brinda una mejor experiencia de usuario.
Ahora responde el ejercicio sobre el contenido:
¿Qué permite la programación asincrónica en Dart y por qué es importante?
¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.
¡Tú error! Inténtalo de nuevo.
Siguiente página del libro electrónico gratuito: