<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Async on Commentary of Takao</title><link>https://takao.blog/es/tags/async/</link><description>Recent content in Async on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>Commentary of Takao</copyright><lastBuildDate>Sun, 12 Jul 2026 04:12:51 +0900</lastBuildDate><atom:link href="https://takao.blog/es/tags/async/index.xml" rel="self" type="application/rss+xml"/><item><title>Patrones a evitar con async/await en JavaScript</title><link>https://takao.blog/es/web/javascript-async-await-tips/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/javascript-async-await-tips/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/javascript-async-await-tips-es.png" alt="Featured image of post Patrones a evitar con async/await en JavaScript" /&gt;&lt;h2 id="introducción"&gt;Introducción
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;async/await&lt;/code&gt; hizo la programación asíncrona más intuitiva, pero puede ocultar problemas de rendimiento y errores.&lt;/p&gt;
&lt;h2 id="antipatrón-1-serialización-innecesaria"&gt;Antipatrón 1: Serialización innecesaria
&lt;/h2&gt;&lt;p&gt;No uses &lt;code&gt;await&lt;/code&gt; secuencial para tareas independientes. Usa &lt;code&gt;Promise.all&lt;/code&gt; para ejecución en paralelo.&lt;/p&gt;
&lt;h2 id="antipatrón-2-bloques-try-catch-anidados"&gt;Antipatrón 2: Bloques try-catch anidados
&lt;/h2&gt;&lt;p&gt;El anidamiento profundo derrota el propósito de async/await. Usa un solo bloque try-catch al más alto nivel.&lt;/p&gt;
&lt;h2 id="antipatrón-3-async-callbacks-en-foreach"&gt;Antipatrón 3: async callbacks en forEach
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;forEach&lt;/code&gt; con async callback ejecuta los callbacks síncronamente. Usa &lt;code&gt;for...of&lt;/code&gt; para secuencial o &lt;code&gt;Promise.all&lt;/code&gt; con &lt;code&gt;map&lt;/code&gt; para paralelo.&lt;/p&gt;</description></item><item><title>Profundizando en el Event Loop de JavaScript: Microtasks, Macrotasks y más</title><link>https://takao.blog/es/web/js-event-loop/</link><pubDate>Mon, 19 Feb 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/js-event-loop/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-event-loop-es.png" alt="Featured image of post Profundizando en el Event Loop de JavaScript: Microtasks, Macrotasks y más" /&gt;&lt;p&gt;El event loop de JavaScript es uno de los conceptos más importantes y menos entendidos. A pesar de ser single-threaded, su event loop permite concurrencia no bloqueante mediante un sistema de colas.&lt;/p&gt;
&lt;h2 id="call-stack"&gt;Call Stack
&lt;/h2&gt;&lt;p&gt;Estructura LIFO. Principio de run-to-completion: cada función se ejecuta hasta completarse antes de que otro código la interrumpa.&lt;/p&gt;
&lt;h2 id="cola-de-macrotasks"&gt;Cola de Macrotasks
&lt;/h2&gt;&lt;p&gt;Origen: &lt;code&gt;setTimeout&lt;/code&gt;, &lt;code&gt;setInterval&lt;/code&gt;, I/O, eventos UI. El event loop toma UNA macrotask por iteración, la ejecuta, luego procesa la cola de microtasks.&lt;/p&gt;</description></item><item><title>Patrones avanzados de Promises en JavaScript: Dominio del flujo asíncrono</title><link>https://takao.blog/es/web/js-promise-patterns/</link><pubDate>Tue, 05 Dec 2023 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/js-promise-patterns/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-promise-patterns-es.png" alt="Featured image of post Patrones avanzados de Promises en JavaScript: Dominio del flujo asíncrono" /&gt;&lt;p&gt;Las Promises son fundamentales en JavaScript moderno. Más allá de cadenas básicas &lt;code&gt;.then()&lt;/code&gt;, existen patrones avanzados para control de concurrencia, manejo de errores y cancelación.&lt;/p&gt;
&lt;h2 id="combinadores-de-promises"&gt;Combinadores de Promises
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Promise.all&lt;/code&gt; resuelve cuando todas resuelven. &lt;code&gt;Promise.allSettled&lt;/code&gt; cuando todas se settling (nunca rechaza). &lt;code&gt;Promise.race&lt;/code&gt; con la primera que se settling. &lt;code&gt;Promise.any&lt;/code&gt; con la primera que resuelve.&lt;/p&gt;
&lt;h2 id="control-de-concurrencia"&gt;Control de concurrencia
&lt;/h2&gt;&lt;p&gt;Un limitador de concurrencia encola tareas y asegura que solo un número específico se ejecute simultáneamente. El patrón &lt;code&gt;pMap&lt;/code&gt; con &lt;code&gt;Promise.race&lt;/code&gt; soporta contrapresión.&lt;/p&gt;</description></item></channel></rss>