JavaScript Assíncrono - Introdução
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.