CursosEmpresasBlogLiveConfPrecios

Event Loop

Clase 3 de 26 • Curso de Asincronismo con JavaScript

Clase anteriorSiguiente clase

Contenido del curso

Introducción
  • 1
    Lo que aprenderás en este curso

    Lo que aprenderás en este curso

    01:34
  • 2
    Qué es el asincronismo

    Qué es el asincronismo

    09:25
  • 3
    Event Loop

    Event Loop

    11:13
  • 4
    Iniciando a programar con JavaScript

    Iniciando a programar con JavaScript

    02:59
Callbacks
  • 5
    Configuración

    Configuración

    10:23
  • 6
    Qué son los Callbacks

    Qué son los Callbacks

    14:56
  • 7

    Playground: Ejecuta un callback con 2s de demora

    00:00
  • 8
    XMLHTTPRequest

    XMLHTTPRequest

    15:03
  • 9
    Fetch data

    Fetch data

    17:44
  • 10
    Callback hell

    Callback hell

    06:56
Promesas
  • 11
    Qué son las promesas

    Qué son las promesas

    11:54
  • 12

    Playground: Crea una función de delay que soporte asincronismo

    00:00
  • 13
    Fetch

    Fetch

    16:12
  • 14
    Fetch POST

    Fetch POST

    14:55
Async Await
  • 15
    Funciones asíncronas

    Funciones asíncronas

    10:07
  • 16
    Try and catch

    Try and catch

    11:51
  • 17

    Playground: Captura el error de una petición

    00:00
  • 18
    ¿Cómo enfrentar los errores?

    ¿Cómo enfrentar los errores?

    03:42
Generadores
  • 19
    Generators

    Generators

    08:06
Proyecto CV
  • 20
    Proyecto del curso

    Proyecto del curso

    11:48
  • 21
    Consumiendo API

    Consumiendo API

    19:24
  • 22
    Desplegando el proyecto

    Desplegando el proyecto

    16:45
  • 23

    Playground: Crea una utilidad para hacer peticiones

    00:00
Nunca pares de crear
  • 24
    Conclusión

    Conclusión

    03:09
  • 25
    ¿Qué camino tomar para seguir aprendiendo?

    ¿Qué camino tomar para seguir aprendiendo?

    04:12
  • 26

    Autoevaluación de Proyecto: Creación de Landing Page

    00:44
    Dario Paladines

    Dario Paladines

    student•
    hace 3 años

    La explicación de Diego de Granda es simplemente espectacular para entender el asincronismo y el event loop Lo explica haciendo analogía con una taqueria :) Clase de Diego

    Screenshot 2022-06-27 090253.png

      Alan Cabrera

      Alan Cabrera

      student•
      hace 3 años

      De las mejores explicaciones que he visto. 10/10

      Jorge Eduardo Jiménez Álvarez

      Jorge Eduardo Jiménez Álvarez

      student•
      hace 3 años

      muchas gracias por compartir, gran complemento

    Matias Diaz

    Matias Diaz

    student•
    hace 3 años

    Tomate el tiempo para ver esta otra clase si te quedaron dudas

    Event Loop - Curso Profesional de JavaScript

    EventLoop.png

      ALINA BONILLA PAREDES

      ALINA BONILLA PAREDES

      student•
      hace 3 años

      Bastante buena la explicación, vale la pena pasar a verlo para entender mejor el concepto

      Federico Ivan Llano

      Federico Ivan Llano

      student•
      hace 3 años

      Vi el video de Richard y dice que los task queue son FIFO (first-in first-out ) 5:30 y en el video de Oscar 3:00 es LIFO al igual que el call stack. Creo que el correcto seria el de Richard.

    Maria Gabriela Rodriguez Cuevas

    Maria Gabriela Rodriguez Cuevas

    student•
    hace 3 años

    🌀 𝗖𝗹𝗮𝘀𝗲 #𝟯: 𝗘𝘃𝗲𝗻𝘁 𝗟𝗼𝗼𝗽 𝟯/𝟮𝟭 🌀 . 📌 Para entender el ++Event Loop++, en el siguiente GIF (fuente: aquí) se muestra que la primera tarea asignada (mostrar por Consola la palabra: "start") pasa por el Call Stack luego se imprime en consola. Cuando el Call Stack tiene el "setTimeout" se debe esperar un periodo de tiempo en este caso 5 segundos para imprimir el mensaje: "Callback Function", ahí es cuando vemos en Web APIs ++el timer++. Mientras tanto, el código sigue corriendo a la siguiente tarea para imprimir en consola la palabra: "end". . El Event Loop es la tarea asignada (en este ejemplo el "callbackFn()") para mover del Task Queue al Stack, ++solo si el stack está vacío++:

    . . 🗄️ ++Javascript se organiza usando las siguientes estructuras de datos:++ . • 🗃️ Memory Heap: Región de memoria libre de gran tamaño, dedicada al alojamiento dinámico de objetos (asignado a un montículo). Es compartida por todo el programa y controlada por un recolector de basura que se encarga de liberar aquello que no se necesita, es decir de forma desorganizada se guarda información de las variables y del scope. • 🔋 Call Stack (pila LIFO: Last-in, First-out): Apila de forma organizada las instrucciones de nuestro programa. La pila de llamadas, se encarga de albergar las instrucciones que deben ejecutarse. Nos indica en que punto del programa estamos, por donde vamos. • 🚗🚕🚙 Task Queue (cola): Cada vez que nuestro programa recibe una notificación del exterior o de otro contexto distinto al de la aplicación, el mensaje se inserta en una cola de mensajes pendientes y se registra su callback correspondiente. El stack debe estar vacío para que esto suceda. • 🚗🚕 Micro Task Queue: Aquí se agregan las promesas. Esta Queue es la que tiene mayor prioridad.

      Libian María Hernández Gil

      Libian María Hernández Gil

      student•
      hace 3 años

      Gracias Maria, buen aporte.

      Alvaro Sanchez

      Alvaro Sanchez

      student•
      hace 3 años

      Excelente resumen!!

    Lucas Rojas

    Lucas Rojas

    student•
    hace 3 años
    Untitled.png
      Daniela Stornelli

      Daniela Stornelli

      student•
      hace 3 años

      me sirvió muchisimo, gracias💚

      Magdiel Linares

      Magdiel Linares

      student•
      hace 3 años

      Gracias lo entendi mejor con esta imagen!

    Charles Duck Castillo Rosas

    Charles Duck Castillo Rosas

    student•
    hace 3 años

    Tuve que ver el video 3 veces xd

      Rubén Ernesto Aragón Gil

      Rubén Ernesto Aragón Gil

      student•
      hace 3 años

      Yo 4 te gané jaja, Ah no, así no era. :(

      Porfirio González López

      Porfirio González López

      student•
      hace 3 años

      Mejor ve el del Profe De Granada

    Francisco Encabo Servián

    Francisco Encabo Servián

    student•
    hace 3 años

    Es buenísima la herramienta para ver el Event Loop, esto es algo que echaba mucho de menos en algunos cursos. Elementos visuales más interactivos. Al final la programación se aprende programando, tocando, errando...

    Joao Ivan Garduño Salgado

    Joao Ivan Garduño Salgado

    student•
    hace 3 años

    ¡Las promesas son parte de las Microtasks Queue! A estas se les da la prioridad y se ejecutan primero antes de las Task Queue!

    JeanPaul Erazo García

    JeanPaul Erazo García

    student•
    hace 3 años

    Creo que hay un error en la parte del Task Queue, este no opera bajo el concepto de LIFO(Last-In, First-out) si no de FIFO(FIrst-In, FIrst-Out) ya que al tratarse de una cola, se le dara prioridad a las tareas que llegaron primero, se puede complementar mas viendo el video del curso profesional de javascript

      Henry Alexander Velásquez Rosas

      Henry Alexander Velásquez Rosas

      student•
      hace 2 años

      Es verdad, incluso en el video que tiene Oscar Barajas en YouTube tiene el mismo error. Justo en los comentarios menciona que se le pasó ese error.

      x.png
      Call stack si funciona como LIFO.

      Diego Raciel Ortega Hernandez

      Diego Raciel Ortega Hernandez

      student•
      hace 2 años

      Si tambien lo note

    Paul Martin Vargas Portugal

    Paul Martin Vargas Portugal

    student•
    hace 3 años

    Event Loop: el buble de eventos de un patró de diseño que espera y distribuye eventos o mensajes de un programa.

    Memory Heap: Los objetos son asignados a un montículo (espacio grante en la memoria no organizado).

    Call Stack (pila): Aplila de forma organizada las instrucciones de nuestro programa .

    Task Queue: Cola de tareas, que se maneja la concurrencia, se agregan las tareas que ua estan listas para pasar al Stack (Pila). El stack debe de estar vacio.

    MicroTask Queue: Las promesas tienen otra forma de ejecutarse y de una prioridad superior.

    Wev APIs: JavaScript del lado del cliente: setTimeout XMLHttpRequest, File Reader, Dom. Node: fs, https.

    Event Loop: Tarea asignada para mover el Task Queue al Stack, solo si el Stack está vacío.

    Alvaro Eduardo Garzón Pira

    Alvaro Eduardo Garzón Pira

    student•
    hace 3 años

    Hola tú, si en esta clase sentiste que el profesor habla en chino, haz el siguiente curso: https://platzi.com/cursos/javascript-navegador/ Es corto y te dará tal como a mí, lo necesario para comprender lo que habla el profesor, también, el profesor Oscar te reforzará conocimientos o temas que no se tocaron o no se profundizaron en el curso de JS Engine V8.

    P.D.: Si ya lo hiciste y sigues sin entender, ¡Vuelve a hacerlo!

    P.D.: También si algo no te queda claro, te recomiendo esta clase también del profesor Oscar Barajas: https://www.youtube.com/watch?v=7GeDNQRQy0Y

      JOSE FABIAN BONILLA GUZMAN

      JOSE FABIAN BONILLA GUZMAN

      student•
      hace 3 años

      el link primero creo que el curso desapareció

      Alvaro Eduardo Garzón Pira

      Alvaro Eduardo Garzón Pira

      student•
      hace 3 años

      ¡Hola th3ryo! ¿Podrías volver a validar? A mí me ingresó sin problema a los dos links:

      Captura de pantalla 2023-05-04 083452.png

    Brenda Estefania Garcia Garcia

    Brenda Estefania Garcia Garcia

    student•
    hace 3 años

    https://www.youtube.com/watch?v=ygA5U7Wgsg8 este video es muy util para entender el call stack

      Santiago Cardenas

      Santiago Cardenas

      student•
      hace 2 años

      Este fue el definitivo para mi, muchas gracias por compartir :)

    Kevin Harold Gutierrez Ramirez

    Kevin Harold Gutierrez Ramirez

    student•
    hace 3 años

    Gracias a todos los que compartieron la clase del Profe Diego. Esta clase + la de Diego = Oro Puro!!! <3

    Francisco Javier Solis Martinez

    Francisco Javier Solis Martinez

    student•
    hace 3 años

    Cada uno de estos elementos que el profesor explico son pequeños contenedores 📦 que se encuentran dentro de un gran contenedor🍱 llamado el JS Runtime, si quieren saber más de ello y del JS Engine recomiendo el curso de JS Engine V8 y el navegador. 😁

    Jeison Gomez

    Jeison Gomez

    student•
    hace 3 años

    Hola compañeros :) Los invito a darle un vistazo a esta Lectura, me hizo muy fácil la compresión de este tema. Espero les sea útil.

      Viena Baca

      Viena Baca

      student•
      hace 3 años

      Muchisimas gracias, tu aporte me ha ayudado a entender muy bien este tema

    Miguel Angel Perez Cardona

    Miguel Angel Perez Cardona

    student•
    hace 3 años

    Me parece que al profe le falto explicar mas con la imagen, pero bueno. Igual casi siempre toca averiguar y ver lo que pasa

    Porfirio González López

    Porfirio González López

    student•
    hace 3 años

    Por qué describen a TASK QUEUE, pero en la imagen se llama Callback Queue?

    No pudieron decir que era lo mismo, tuve que andar de allá para aquí para notar eso.

    Gustavo Yunier Leyte-Vidal  Chacón

    Gustavo Yunier Leyte-Vidal Chacón

    student•
    hace 3 años

    En el minuto 3 sobre la cola de tareas (task queue), la estructura de datos cola no debería ser FIFO (First In, First Out) ?

      Oscar Barajas Tavares

      Oscar Barajas Tavares

      Team Platzi•
      hace 3 años

      Gustavo, ya mismo lo reviso

      LUZ ADRIANA MARTINEZ RAMIREZ

      LUZ ADRIANA MARTINEZ RAMIREZ

      student•
      hace 3 años

      Si lo piensas, si tuvieses una funcion que te entrega un dato u objeto parseado o lo que quieras, no puedes resolver primero la ultima, pues el dato de la ultima te lo entrega la primera funcion, eso es un ejemplo.

    Daniel Fernando Ramirez Giraldo

    Daniel Fernando Ramirez Giraldo

    student•
    hace 3 años

    La explicación de la clase es un poquito abstracta por tantos elementos sueltos interactuando entre sí, pero para sintetizar, este es el ciclo que se cumple: ㅤ

    1. Las funciones y variables se guardan en el Memory Heap.
    2. Cada instrucción o tarea que programamos en JavaScript se va apilando en el Call Stack en espera de ser ejecutadas.
    3. El motor de JavaScript va sacando una a una las tareas de la parte superior de la pila del Call Stack (que es de tipo LIFO) para procesarlas.
    4. Si el motor de JavaScript se encuentra en la pila del Call Stack una tarea asincrónica (como un setTimeOut, por ejemplo), dice: "esto no es tarea mía" y se lo pasa al navegador para que procese esa tarea por su lado, ya sea al MicroTasks Queue (para filtrar las Promises) o a las Web APIs (funciones propias del navegador).
    5. El Call Stack sigue procesando el resto de tareas una a una, mientras el navegador procesa las tareas asincrónicas que se le pasaron. Una vez el navegador las completa, las pasa al Callback Queue (fila tipo FIFO) para indicar que ya están realizadas.
    6. El Event Loop vigila permanentemente el Call Stack del lado de JavaScript, y una vez lo ve vacío, traslada una a una las tareas completadas que hay en el Callback Queue del lado del navegador hacia el Call Stack para que ahora sí, sean procesadas sincrónicamente por JavaScript. ㅤ

    Esta animación ayuda a ver cómo van interactuando las tareas en ese ciclo:

    ㅤ Así como lo recomendaron varios, recomiendo mucho ver la clase sobre qué es la asincronía en JavaScript del profesor Diego de Granda. Ayudará muchísimo a entender este concepto.

      Ricardo Alfonso Chavez Vilcapoma

      Ricardo Alfonso Chavez Vilcapoma

      student•
      hace 3 años

      Sólo objetos y arrays se guardan en el grado, el resto en el callstack. Revisa el curso de POO básico, el profe JuanDC lo explica

    Charles Duck Castillo Rosas

    Charles Duck Castillo Rosas

    student•
    hace 3 años
    Screenshot 2022-06-21 012055.png
    Daniel Triana

    Daniel Triana

    student•
    hace 3 años

    Honestamente siento que el problema de Oscar es el no saber diseccionar los temas en partes mas pequeñas y digeribles, el intentar explicar el Callstack en 15s, simplemente no es suficiente, y es fundamental para entender el Eventloop. Como Oscar ya lo entiende, tiene una idea general, por lo que al resumirlo todo en una sentencia se puede tener una idea clara, pero para el que YA SABE, para alguien nuevo solo le genera mas confusión. Por eso no es de extrañar que en los comentarios de esta clase hallan links a otras clases y recursos externos. . Aqui les dejo un link de una Playlist genial que explica todo los conceptos fundamentales de JavaScript para entender el asincronismo. Va mas a fondo que en el curso de Diego de Granda, e incluso me parece que explica de una mejor manera.

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads