{"id":3044,"date":"2020-09-02T08:51:00","date_gmt":"2020-09-02T08:51:00","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"},"modified":"2026-04-24T11:34:04","modified_gmt":"2026-04-24T11:34:04","slug":"asynchronous-and-single-threaded-javascript-meet-the-event-loop","status":"publish","type":"post","link":"https:\/\/thecodest.co\/es\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","title":{"rendered":"As\u00edncrono y monohilo JavaScript?"},"content":{"rendered":"<ul class=\"wp-block-list\">\n<li><strong>Tiempo de ejecuci\u00f3n<\/strong><\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/es\/blog\/hire-javascript-developer\/\">JavaScript<\/a> es un lenguaje interpretado, no compilado. Esto significa que necesita un int\u00e9rprete que convierta los archivos <a href=\"https:\/\/thecodest.co\/es\/blog\/hire-vue-js-developers\/\">JS<\/a> <a href=\"https:\/\/thecodest.co\/es\/dictionary\/what-is-code-refactoring\/\">c\u00f3digo<\/a> a un c\u00f3digo m\u00e1quina. Existen varios tipos de int\u00e9rpretes (conocidos como motores). Los m\u00e1s populares son V8 (Chrome), Quantum (Firefox) y WebKit (Safari). Por cierto, V8 tambi\u00e9n se utiliza en un popular runtime que no es de navegador, <a href=\"https:\/\/thecodest.co\/es\/blog\/find-your-node-js-expert-for-hire-today\/\">Node.js<\/a>.<\/p>\n\n\n\n<p>Cada motor contiene un mont\u00f3n de memoria, una pila de llamadas, un bucle de eventos, una cola de retrollamadas y una WebAPI con peticiones HTTP, temporizadores, eventos, etc., todo implementado a su manera para una interpretaci\u00f3n m\u00e1s r\u00e1pida y segura del c\u00f3digo JS.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/runtime-architecture.png\" alt=\"JavaScript desarrollo\" title=\"JavaScript desarrollo\"\/><\/figure>\n\n\n\n<p><em>Arquitectura b\u00e1sica de ejecuci\u00f3n JS. Autor: Alex Zlatkov<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Hilo \u00fanico<\/strong><\/h2>\n\n\n\n<p>Un lenguaje monohilo es aquel que tiene una \u00fanica pila de llamadas y un \u00fanico mont\u00f3n de memoria. Esto significa que s\u00f3lo ejecuta una cosa a la vez.<\/p>\n\n\n\n<p>A&nbsp;<code>pila<\/code>&nbsp;es una regi\u00f3n continua de memoria, que asigna un contexto local para cada funci\u00f3n ejecutada.<\/p>\n\n\n\n<p>A&nbsp;<code>mont\u00f3n<\/code>&nbsp;es una regi\u00f3n mucho mayor, que almacena todo lo asignado din\u00e1micamente.<\/p>\n\n\n\n<p>A&nbsp;<code>pila de llamadas<\/code>&nbsp;es un <a href=\"https:\/\/thecodest.co\/es\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">datos<\/a> que b\u00e1sicamente registra d\u00f3nde estamos en el programa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pila de llamadas<\/strong><\/h3>\n\n\n\n<p>Escribamos un c\u00f3digo sencillo y sigamos lo que ocurre en la pila de llamadas.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/stack.gif\" alt=\"JavaScript desarrollo de software\" title=\"JavaScript desarrollo de software\"\/><\/figure>\n\n\n\n<p>Como puede ver, las funciones se a\u00f1aden a la pila, se ejecutan y posteriormente se eliminan. Es el llamado modo LIFO - Last In, First Out (\u00faltimo en entrar, primero en salir). Cada entrada de la pila de llamadas se denomina&nbsp;<code>marco de pila<\/code>.<\/p>\n\n\n\n<p>El conocimiento de la pila de llamadas es \u00fatil para leer las trazas de la pila de errores. Generalmente, el motivo exacto del error se encuentra en la parte superior de la primera l\u00ednea, aunque el orden de ejecuci\u00f3n del c\u00f3digo es ascendente.<\/p>\n\n\n\n<p>A veces se puede tratar de un error popular, notificado por\u00a0<code>Se ha superado el tama\u00f1o m\u00e1ximo de la pila de llamadas<\/code>. Es f\u00e1cil conseguirlo utilizando la recursividad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">function foo() {\n    foo()\n}\nfoo()<\/code><\/pre>\n\n\n\n<p>y nuestro navegador o terminal se congela. Cada navegador, incluso sus diferentes versiones, tiene un l\u00edmite de tama\u00f1o de pila de llamadas diferente. En la gran mayor\u00eda de los casos, son suficientes y el problema debe buscarse en otro sitio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pila de llamadas bloqueada<\/strong><\/h3>\n\n\n\n<p>He aqu\u00ed un ejemplo de bloqueo del hilo JS. Intentemos leer un&nbsp;<code>foo<\/code>&nbsp;y un archivo&nbsp;<code>bar<\/code>&nbsp;utilizando el <a href=\"https:\/\/thecodest.co\/es\/dictionary\/what-is-node-js-used-for\/\">Nodo<\/a>.js funci\u00f3n sincr\u00f3nica&nbsp;<code>readFileSync<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/blocking.gif\" alt=\"C\u00f3digo JavaScript\" title=\"C\u00f3digo JavaScript\"\/><\/figure>\n\n\n\n<p>Este es un GIF en bucle. Como ves, el motor JS espera hasta la primera llamada en&nbsp;<code>readFileSync<\/code>&nbsp;se ha completado. Pero esto no suceder\u00e1 porque no hay&nbsp;<code>foo<\/code>&nbsp;por lo que nunca se llamar\u00e1 a la segunda funci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Comportamiento as\u00edncrono<\/strong><\/h2>\n\n\n\n<p>Sin embargo, JS tambi\u00e9n puede ser no bloqueante y comportarse como si fuera multihilo. Esto significa que no espera la respuesta de un <a href=\"https:\/\/thecodest.co\/es\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a> eventos de E\/S, etc., y puede continuar la ejecuci\u00f3n del c\u00f3digo. Esto es posible gracias a los motores JS que utilizan (bajo el cap\u00f3) lenguajes multi-threading reales, como C++ (Chrome) o Rust (Firefox). Proporcionan <a href=\"https:\/\/thecodest.co\/es\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a> con el <a href=\"https:\/\/thecodest.co\/es\/blog\/find-your-ideal-stack-for-web-development\/\">Web<\/a> API bajo las campanas del navegador o ex. API de E\/S bajo Node.js.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/callback-queue.gif\" alt=\"Lenguaje de programaci\u00f3n JavaScript\" title=\"Lenguaje de programaci\u00f3n JavaScript\"\/><\/figure>\n\n\n\n<p>En el GIF anterior, podemos ver que la primera funci\u00f3n es empujada a la pila de llamadas y&nbsp;<code>Hola<\/code>&nbsp;se ejecuta inmediatamente en la consola.<\/p>\n\n\n\n<p>A continuaci\u00f3n, llamamos al&nbsp;<code>setTimeout<\/code>&nbsp;proporcionada por la WebAPI del navegador. Va a la pila de llamadas y su devoluci\u00f3n de llamada as\u00edncrona&nbsp;<code>foo<\/code>&nbsp;va a la cola de WebApi, donde espera la llamada, programada para que ocurra despu\u00e9s de 3 segundos.<\/p>\n\n\n\n<p>Mientras tanto, el programa contin\u00faa el c\u00f3digo y vemos&nbsp;<code>Hola. No estoy bloqueado<\/code>&nbsp;en la consola.<\/p>\n\n\n\n<p>Una vez invocada, cada funci\u00f3n de la cola WebAPI pasa a la carpeta&nbsp;<code>Cola de devoluci\u00f3n de llamada<\/code>. Es donde las funciones esperan hasta que la pila de llamadas est\u00e1 vac\u00eda. Cuando esto ocurre, se mueven all\u00ed una a una.<\/p>\n\n\n\n<p>As\u00ed, cuando nuestro&nbsp;<code>setTimeout<\/code>&nbsp;termina la cuenta atr\u00e1s, nuestro&nbsp;<code>foo<\/code>&nbsp;va a la cola de retrollamadas, espera hasta que la pila de llamadas est\u00e9 disponible, va all\u00ed, se ejecuta y vemos&nbsp;<code>Hola desde callback as\u00edncrono<\/code>&nbsp;en la consola.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Bucle de eventos<\/strong><\/h3>\n\n\n\n<p>La pregunta es, \u00bfc\u00f3mo sabe el tiempo de ejecuci\u00f3n que la pila de llamadas est\u00e1 vac\u00eda y c\u00f3mo se invoca el evento en la cola de devoluci\u00f3n de llamada? Conoce el bucle de eventos. Forma parte del motor JS. Este proceso comprueba constantemente si la pila de llamadas est\u00e1 vac\u00eda y, si lo est\u00e1, controla si hay un evento en la cola de llamadas de retorno esperando a ser invocado.<\/p>\n\n\n\n<p>As\u00ed es la magia entre bastidores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Recapitulaci\u00f3n de la teor\u00eda<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Concurrencia y paralelismo<\/strong><\/h3>\n\n\n\n<p><code>Concurrencia<\/code>&nbsp;significa ejecutar varias tareas al mismo tiempo, pero no simult\u00e1neamente. Por ejemplo, dos tareas funcionan en periodos de tiempo que se solapan.<\/p>\n\n\n\n<p><code>Paralelismo<\/code>&nbsp;significa realizar dos o m\u00e1s tareas simult\u00e1neamente, por ejemplo, realizar varios c\u00e1lculos al mismo tiempo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Hilos y procesos<\/strong><\/h3>\n\n\n\n<p><code>Hilos<\/code>&nbsp;son una secuencia de ejecuci\u00f3n de c\u00f3digo que pueden ejecutarse independientemente unas de otras.<\/p>\n\n\n\n<p><code>Proceso<\/code>&nbsp;es una instancia de un programa en ejecuci\u00f3n. Un programa puede tener varios procesos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Sincr\u00f3nico y asincr\u00f3nico<\/strong><\/h3>\n\n\n\n<p>En&nbsp;<code>s\u00edncrono<\/code>&nbsp;programaci\u00f3n, las tareas se ejecutan una tras otra. Cada tarea espera a que se complete cualquier tarea anterior y se ejecuta solo entonces.<\/p>\n\n\n\n<p>En&nbsp;<code>as\u00edncrono<\/code>&nbsp;programaci\u00f3n, cuando se ejecuta una tarea, puede cambiar a otra distinta sin esperar a que finalice la anterior.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Sincr\u00f3nico y asincr\u00f3nico en un entorno monohilo y multihilo<\/strong><\/h3>\n\n\n\n<p><code>Sincr\u00f3nico con un \u00fanico hilo<\/code>: Las tareas se ejecutan una tras otra. Cada tarea espera a que se ejecute la anterior.<\/p>\n\n\n\n<p><code>Sincr\u00f3nico con m\u00faltiples hilos<\/code>: Las tareas se ejecutan en diferentes hilos pero esperan a que se ejecute cualquier otra tarea en cualquier otro hilo.<\/p>\n\n\n\n<p><code>As\u00edncrono con un \u00fanico hilo<\/code>: Las tareas comienzan a ejecutarse sin esperar a que termine otra tarea. En un momento dado, s\u00f3lo puede ejecutarse una \u00fanica tarea.<\/p>\n\n\n\n<p><code>As\u00edncrono con m\u00faltiples hilos<\/code>: Las tareas se ejecutan en diferentes hilos sin esperar a que se completen otras tareas y terminan sus ejecuciones de forma independiente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Clasificaci\u00f3n JavaScript<\/strong><\/h2>\n\n\n\n<p>Si consideramos c\u00f3mo funcionan los motores JS bajo el cap\u00f3, podemos clasificar JS como un lenguaje interpretado as\u00edncrono y de un solo hilo. La palabra \"interpretado\" es muy importante porque significa que el lenguaje siempre depender\u00e1 del tiempo de ejecuci\u00f3n y nunca ser\u00e1 tan r\u00e1pido como los lenguajes compilados con multihilo incorporado.<\/p>\n\n\n\n<p>Cabe destacar que Node.js puede conseguir un multihilo real, siempre que cada hilo se inicie como un proceso independiente. Existen librer\u00edas para ello, pero Node.js incorpora una funci\u00f3n llamada&nbsp;<a href=\"https:\/\/nodejs.org\/api\/worker_threads.html#worker_threads_worker_threads\">Hilos de trabajo<\/a>.<\/p>\n\n\n\n<p>Todos los GIF del bucle de eventos proceden del&nbsp;<a href=\"https:\/\/github.com\/latentflip\/loupe\">Lupa<\/a>&nbsp;creada por Philip Roberts, donde puedes probar tus escenarios as\u00edncronos.<\/p>\n\n\n\n<p><b>M\u00e1s informaci\u00f3n:<\/b><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/why-you-should-probably-use-typescript\">\u00bfPor qu\u00e9 deber\u00eda (probablemente) utilizar Typescript?<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/quality-first-5-easy-steps-to-lint-your-code-with-github-workflows-in-javascript-project\/\">La calidad ante todo 5 sencillos pasos para eliminar la pelusa de su c\u00f3digo con flujos de trabajo de GitHub en el proyecto JavaScript<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/how-to-improve-vue-js-apps-some-practical-tips\/\">\u00bfC\u00f3mo mejorar las aplicaciones Vue.js? Algunos consejos pr\u00e1cticos<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>JavaScript es un lenguaje monohilo y, al mismo tiempo, tambi\u00e9n no bloqueante, as\u00edncrono y concurrente. Este art\u00edculo le explicar\u00e1 c\u00f3mo sucede.<\/p>","protected":false},"author":2,"featured_media":3045,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3044","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Asynchronous and Single-threaded JavaScript? - The Codest<\/title>\n<meta name=\"description\" content=\"JavaScript is a single-threaded language and, at the same time, also non-blocking, asynchronous and concurrent. This article will explain to you how it happens.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/es\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Asynchronous and Single-threaded JavaScript?\" \/>\n<meta property=\"og:description\" content=\"JavaScript is a single-threaded language and, at the same time, also non-blocking, asynchronous and concurrent. This article will explain to you how it happens.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/es\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-02T08:51:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:34:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Asynchronous and Single-threaded JavaScript?\",\"datePublished\":\"2020-09-02T08:51:00+00:00\",\"dateModified\":\"2026-04-24T11:34:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"},\"wordCount\":1058,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\",\"name\":\"Asynchronous and Single-threaded JavaScript? - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"datePublished\":\"2020-09-02T08:51:00+00:00\",\"dateModified\":\"2026-04-24T11:34:04+00:00\",\"description\":\"JavaScript is a single-threaded language and, at the same time, also non-blocking, asynchronous and concurrent. This article will explain to you how it happens.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/cover-image-16.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Asynchronous and Single-threaded JavaScript?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/es\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"As\u00edncrono y monohilo JavaScript? - The Codest","description":"JavaScript es un lenguaje monohilo y, al mismo tiempo, tambi\u00e9n no bloqueante, as\u00edncrono y concurrente. Este art\u00edculo le explicar\u00e1 c\u00f3mo sucede.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/es\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","og_locale":"es_ES","og_type":"article","og_title":"Asynchronous and Single-threaded JavaScript?","og_description":"JavaScript is a single-threaded language and, at the same time, also non-blocking, asynchronous and concurrent. This article will explain to you how it happens.","og_url":"https:\/\/thecodest.co\/es\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","og_site_name":"The Codest","article_published_time":"2020-09-02T08:51:00+00:00","article_modified_time":"2026-04-24T11:34:04+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","type":"image\/jpeg"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Asynchronous and Single-threaded JavaScript?","datePublished":"2020-09-02T08:51:00+00:00","dateModified":"2026-04-24T11:34:04+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"},"wordCount":1058,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","articleSection":["Software Development"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","url":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/","name":"As\u00edncrono y monohilo JavaScript? - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","datePublished":"2020-09-02T08:51:00+00:00","dateModified":"2026-04-24T11:34:04+00:00","description":"JavaScript es un lenguaje monohilo y, al mismo tiempo, tambi\u00e9n no bloqueante, as\u00edncrono y concurrente. Este art\u00edculo le explicar\u00e1 c\u00f3mo sucede.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/cover-image-16.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/asynchronous-and-single-threaded-javascript-meet-the-event-loop\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Asynchronous and Single-threaded JavaScript?"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/es\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/comments?post=3044"}],"version-history":[{"count":6,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3044\/revisions"}],"predecessor-version":[{"id":7721,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3044\/revisions\/7721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media\/3045"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media?parent=3044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/categories?post=3044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/tags?post=3044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}