¿Ya dominas lo básico? Un curso estructurado de JavaScript es la vía rápida para dar el salto.
Ver cursos de JavaScript en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Crear variables
- 03Condicionales (sentencias if)
- 04Bucles (sentencias for)
- 05Crear funciones
- 06Trabajar con arrays
- 07Trabajar con objetos
- 08Bucles (sentencias while)
- 09Trabajar con cadenas de texto
- 10Usar clases (programación orientada a objetos)
- 11Gestión de errores (try...catch)
- 12Desestructuración y sintaxis de propagación
- 13Código asíncrono (Promise / async y await)
- 14Métodos avanzados de arrays (filter y reduce)
- 15La sentencia switch
- 16El operador ternario
- 17Herencia (extender clases)
- 18Cómo escribir comentarios
- 19Operadores lógicos (AND, OR, NOT)
- 20Constantes (valores de solo lectura con const)
- 21Dividir y unir cadenas (split y join)
- 22Sintaxis segura frente a null (?? y ?.)
- 23Buscar en arrays y colecciones (includes y find)
- 24Transformar arrays con map
- 25Arrays bidimensionales (datos en forma de tabla)
- 26Crear una clase de error propia
- 27Argumentos por defecto (valores iniciales de los parámetros)
- 28Usar Set (colecciones)
- 29Verificar con assert (tu primer paso hacia las pruebas)
- 30Funciones de orden superior (pasar una función como argumento)
- 31Pilas y colas (estructuras de datos básicas)
- 32Fundamentos de la conversión de tipos
- 33Introducción a las expresiones regulares
- 34El algoritmo de búsqueda binaria
- 35Construir un cifrado César (desplazar letras)
- 36Entender cómo funciona la ordenación de burbuja
- 37Construir y mostrar fechas (año, mes y día)
- 38Escribir varias pruebas unitarias juntas (casos de prueba)
- 39Acelerar cálculos con memoización (caché)
- 40Normalizar cadenas (trim y unificar mayúsculas)
- 41La diferencia entre copia superficial y copia profunda
- 42Fundamentos de los Enum (tipos enumerados)
- 43Aplanar arrays (flatten)
- 44Invertir una cadena y detectar un palíndromo
- 45Emparejar dos arrays (una operación zip)
- 46Redondear números (floor, ceil y round)
- 47Cadenas de varias líneas (plantillas literales)
- 48Devolver varios valores desde una función (desestructurar arrays)
- 49Calcular el MCD y el MCM (algoritmo de Euclides)
- 50Dar formato a números (alinear dígitos y decimales)
- 51Lógica de limpieza con try/catch/finally
- 52Escribir funciones genéricas que no dependen del tipo
- 53Fundamentos de Map (un objeto para pares clave-valor)
- 54Generar números aleatorios
- 55Operaciones a nivel de bits (AND, OR, XOR y desplazamientos)
- 56Usar static (propiedades y métodos estáticos)
- 57Esperar un tiempo fijo (setTimeout y await)
- 58Cuidado con el error de redondeo en coma flotante
- 59Transformar y aplanar de una vez con flatMap()
- 60FizzBuzz (el ejercicio clásico)
- 61Comprobar si un número es primo
- 62Operaciones de conjuntos con Set (unión, intersección y diferencia)
- 63Convertir bases numéricas (binario y hexadecimal)
- 64Comprobar que los paréntesis casan (aplicación de pilas)
- 65Comprobar un anagrama
- 66Comprobar si un año es bisiesto
- 67Convertir temperaturas (Celsius ⇄ Fahrenheit)
- 68Calcular la descomposición en factores primos
- 69[Aplicado] Construye una lista de tareas sencilla
Código asíncrono (Promise / async y await)
En esta lección verás lo básico del código asíncrono en JavaScript (las Promises y async/await) para manejar correctamente operaciones que llevan tiempo, como las peticiones de red. Está dirigida a quien busca «uso de async await en JavaScript» o «qué es una Promise en JavaScript».
Para tratar operaciones que tardan (como las peticiones de red), JavaScript usa un mecanismo llamado Promise. Dentro de una función marcada como async, puedes usar await para «esperar» a que llegue el resultado de una Promise. Es un mecanismo para expresar procesos con retardo, como «esperar a que llegue la comida después de pedirla». Si no usas await, la línea siguiente se ejecuta sin esperar a que termine la operación.
El código de ejemplo construye una función wait con una Promise que espera un tiempo determinado, y dentro de la función main espera 300 milisegundos con await wait(300). Al ejecutarlo verás que la segunda línea aparece con un pequeño retardo. Fíjate también en que la llamada a main() lleva su propio await, de modo que el programa espera a que termine antes de continuar.
Un tropiezo habitual al empezar es intentar usar await fuera de una función, o dentro de una que no está marcada como async, lo que provoca un error. Recuerda la regla: await solo se puede usar dentro de una función async. Otro fallo común es intentar usar un resultado antes de que la operación asíncrona haya terminado, obteniendo un undefined inesperado.
En el desarrollo real, toda clase de comunicaciones y esperas —pedir datos a una API, leer un archivo, ejecutar algo tras un retardo— se escribe con Promises y async/await. Al construir una aplicación web que se comunica con una API, esta forma de pensar el código asíncrono es un conocimiento básico e inevitable.
Cuando quieres lanzar varias operaciones asíncronas a la vez y esperar a que terminen todas, usas Promise.all([tarea1, tarea2]). Es más rápido que esperarlas una a una en secuencia, y es una técnica habitual para ejecutar varias peticiones de API en paralelo.
Si una operación esperada con await falla, puedes capturar el error con un try...catch normal. Poder tratar los errores del código síncrono y asíncrono con la misma sintaxis es una de las razones por las que se prefiere async/await frente a escribir Promises directamente.
💡 Todo lo que pases a console.log() aparece en la salida de abajo.
