En un lenguaje de programación asíncrono como JavaScript, las tareas pueden ejecutarse secuencialmente, esto significa que podemos indicar que algunas tareas se pasen a segundo plano y esperen a su turno para ser reanudadas y ejecutadas.
Esta característica del lenguaje existe para mejorar el rendimiento del mismo, porque nos permite aprovechar al máximo las capacidades del equipo en el que se está ejecutando nuestro código.
Por lo general las tareas que se esperan sean más tardadas, o que necesiten esperar respuesta de algún otro elemento del sistema, son candidatas a ser delegadas a este proceso de espera y ejecución.
JavaScript es un lenguaje de ejecución sobre un solo hilo, esto significa que sólo puede ejecutar una tarea a la vez. Cuando una operación tarda demasiado o está esperando la respuesta de otra, decimos que bloquea las demás instrucciones, precisamente porque JavaScript no puede ejecutar dos a la vez.
Para solucionar esto, JavaScript introduce el event loop, o ciclo de eventos. El event loop se compone de dos componentes principales, una cola de mensajes y un ciclo que se encuentra iterando esta cola de mensajes. La programación asíncrona en JavaScript funciona empujando ciertas operaciones a esta cola de actividades, para que no bloqueen la ejecución de código mientras terminan, el trabajo del event loop es estar preguntando las operaciones de la cola de actividades si ya han finalizado, y cuando lo hacen, reanuda la ejecución de dicha operación, la recupera por así decirlo.
Para que todo esto funcione, necesitas una forma de delegar ciertas operaciones a esta cola, y una forma de saber cuándo estas operaciones han terminado, para hacerlo JavaScript introdujo inicialmente el concepto de callbacks, y después el de promesas, finalmente a la sintaxis se introdujeron las funciones asíncronas, todos estos conceptos están diseñados para que esta comunicación entre el event loop, la cola de actividades y tu código, suceda.
Veamos en la práctica como hacerlo.
-
Módulo 1 | 10 clases
Introducción
expand_more-
play_circle_outline
Clase 1
Presentación del curso de JavaScript
-
play_circle_outline
Clase 2
Acerca del lenguaje
-
play_circle_outline
Clase 3
Qué cubriremos en este curso
-
play_circle_outline
Clase 4
Qué hay de nuevo en esta actualización del curso
-
play_circle_outline
Clase 5
Cómo ejecutar código de JavaScript
-
play_circle_outline
Clase 6
Editor de texto y archivos de javaScript
-
play_circle_outline
Clase 7
Dónde puedo investigar más
-
play_circle_outline
Clase 8
Configurar el entorno de trabajo
-
play_circle_outline
Clase 9
Imprimir mensajes
-
play_circle_outline
Clase 10
Recibir datos
-
-
Módulo 2 | 13 clases
Conceptos básicos
expand_more-
play_circle_outline
Clase 1
Cómo es el lenguaje técnicamente
-
play_circle_outline
Clase 2
Qué son las variables y las constantes
-
play_circle_outline
Clase 3
Variables y constantes en javaScript
-
play_circle_outline
Clase 4
Números y operaciones aritméticas
-
play_circle_outline
Clase 5
Tipos de datos
-
play_circle_outline
Clase 6
Coerción de tipos
-
play_circle_outline
Clase 7
Booleanos
-
play_circle_outline
Clase 8
Truthy y Falsy
-
play_circle_outline
Clase 9
Operadores de comparación
-
play_circle_outline
Clase 10
Operadores lógicos
-
play_circle_outline
Clase 11
Condiciones
-
play_circle_outline
Clase 12
Ciclos
-
play_circle_outline
Clase 13
undefined, null y NaN
-
-
Módulo 3 | 8 clases
Fundamentos de funciones
expand_more-
play_circle_outline
Clase 1
Introducción a las funciones
-
play_circle_outline
Clase 2
El scope o alcance
-
play_circle_outline
Clase 3
Alcance de función y de bloque
-
play_circle_outline
Clase 4
Argumentos de funciones
-
play_circle_outline
Clase 5
Pase por valor y por referencia
-
play_circle_outline
Clase 6
Funciones puras
-
play_circle_outline
Clase 7
First class objects
-
play_circle_outline
Clase 8
Hoisting
-
-
Módulo 4 | 10 clases
Arreglos
expand_more-
play_circle_outline
Clase 1
Arreglos y sus usos
-
play_circle_outline
Clase 2
Conceptos básicos de los arreglos
-
play_circle_outline
Clase 3
Recorrer un arreglo
-
play_circle_outline
Clase 4
Operaciones funcionales con arreglos
-
play_circle_outline
Clase 5
Recorrer un arreglo con forEach
-
play_circle_outline
Clase 6
Modificar arreglos con map
-
play_circle_outline
Clase 7
Filtrar elementos con filter
-
play_circle_outline
Clase 8
Reducir un arreglo a un solo elemento con reduce
-
play_circle_outline
Clase 9
Buscar elementos con un arreglo
-
play_circle_outline
Clase 10
Spread y rest sintax
-
-
Módulo 5 | 6 clases
Objetos y JSON
expand_more-
play_circle_outline
Clase 1
Qué es la programación orientada a objetos
-
play_circle_outline
Clase 2
Declarar un objeto JSON
-
play_circle_outline
Clase 3
Shorthand syntax
-
play_circle_outline
Clase 4
Duplicar o combinar objetos
-
play_circle_outline
Clase 5
Destructuring assignment
-
play_circle_outline
Clase 6
Funciones constructoras
-
-
Módulo 6 | 4 clases
El contexto
expand_more -
Módulo 7 | 7 clases
Clases
expand_more-
play_circle_outline
Clase 1
Definir clases
-
play_circle_outline
Clase 2
Definir métodos y propiedades
-
play_circle_outline
Clase 3
Alcance de propiedades
-
play_circle_outline
Clase 4
Método constructor
-
play_circle_outline
Clase 5
Herencia de clases
-
play_circle_outline
Clase 6
Métodos accesores
-
play_circle_outline
Clase 7
Métodos y propiedades estáticas
-
-
Módulo 8 | 4 clases
Prototipos
expand_more -
Módulo 9 | 8 clases
Programación asíncrona
expand_more-
play_arrow
Clase 1
Qué es la programación asíncrona
-
play_circle_outline
Clase 2
Configuración de node.js
-
play_circle_outline
Clase 3
Callbacks
-
play_circle_outline
Clase 4
Promesas
-
play_circle_outline
Clase 5
Callbacks de las promesas
-
play_circle_outline
Clase 6
Crear promesas
-
play_circle_outline
Clase 7
Resolver múltiples promesas
-
play_circle_outline
Clase 8
Encadenar promesas
-
-
Módulo 10 | 4 clases
Funciones asíncronas (async | await)
expand_more -
Módulo 11 | 5 clases
Módulos
expand_more -
Módulo 12 | 10 clases
Generadores e iteradores
expand_more-
play_circle_outline
Clase 1
Generadores e Iteradores
-
play_circle_outline
Clase 2
Iteradores
-
play_circle_outline
Clase 3
Generadores
-
play_circle_outline
Clase 4
Return en funciones generadoras
-
play_circle_outline
Clase 5
Delegar generadores
-
play_circle_outline
Clase 6
Dónde se usan los generadores
-
play_circle_outline
Clase 7
Símbolos en JavaScript
-
play_circle_outline
Clase 8
Manejo de símbolos
-
play_circle_outline
Clase 9
Iterables con iteradores
-
play_circle_outline
Clase 10
Iterables y generadores
-
-
Módulo 13 | 11 clases
Cadenas a fondo
expand_more-
play_circle_outline
Clase 1
Strings o cadenas
-
play_circle_outline
Clase 2
Cómo definir una cadena
-
play_circle_outline
Clase 3
Caracteres especiales
-
play_circle_outline
Clase 4
Concatenación e interpolación
-
play_circle_outline
Clase 5
Comparación de cadenas
-
play_circle_outline
Clase 6
Subcadenas y caracteres
-
play_circle_outline
Clase 7
Búsqueda
-
play_circle_outline
Clase 8
Cadenas y arreglos
-
play_circle_outline
Clase 9
Otros métodos de las cadenas
-
play_circle_outline
Clase 10
Unicode
-
play_circle_outline
Clase 11
Planos unicode
-
-
Módulo 14 | 7 clases
Expresiones regulares
expand_more-
play_circle_outline
Clase 1
Expresiones regulares
-
play_circle_outline
Clase 2
Búsqueda con expresiones regulares
-
play_circle_outline
Clase 3
Reemplazando patrones
-
play_circle_outline
Clase 4
Rangos en regex
-
play_circle_outline
Clase 5
Agrupamiento
-
play_circle_outline
Clase 6
Cuantificadores
-
play_circle_outline
Clase 7
Ejercicio final regex
-