JavaScript Assíncrono – Introdução

Trabalha com desenvolvimento web há mais de 12 anos, atuando com projetos open source, palestrante, instrutor, e sócio fundador da Nasc, além de ser curador e idealizador da ​BrazilJS. Também um GDE.

JavaScript tem muitas qualidades que eu, pessoalmente, admiro muito. Uma das mais divertidas é, sem dúvida, as possibilidades assíncronas desta linguagem!

Uma feature divertida e, ao mesmo tempo, complexa. O JavaScript nos dá a possibilidade de escrever utilizando alguns paradigmas interessantes (e dignos de estudo aprofundado) como o paradigma procedural, o paradigma funcional ou com Orientação a Objetos (por meio de protótipos, não de classes).

Mas todo esse benefício tem um preço, e o preço é justamente a complexidade que isso traz na hora de lermos e compreendermos um código.

Além disso, o JavaScript também trabalha com fluxos bem distintos e nós podemos “quebrar” tais fluxos utilizando algumas features da linguagem, como setTimeout, setInterval, addEventListener, entre outros.

O JavaScript sempre teve como ponto forte a possibilidade de trabalhar de forma assíncrona e, há muito, vem evoluindo o assunto. Tivemos uma importante explosão com o Ajax há mais de uma década e, antes dele, já usávamos iframes para atingirmos resultados parecidos.

Promises vieram para nos ajudar a superar o famoso callback hell, uma verdadeira “maçaroca” em que alguns códigos acabavam se tornando! As promises trouxeram um padrão para lidarmos com código assíncrono, para desenvolvermos APIs mais robustas e modernas e organizar nosso código assíncrono de maneira mais legível. Mas elas também não são nenhuma “bala de prata” e tem seus problemas.

O JavaScript moderno conta com várias novas opções que são justamente as que abordaremos nesta série. Entre elas, Promises, Async/Await, Generators, Web Worker…

Acompanhem os próximos artigos nos quais aprofundaremos cada um dos padrões e APIs.


BrazilJS é uma iniciativa NASC