JavaScript Assíncrono
=====================

Neste módulo vamos entender JavaScript Assíncrono, porque isso é importante e como pode ser usado para lidar com operações potencialmente bloqueantes, como a busca de recursos em um servidor remoto.Pre requisitos
--------------

Javascript Assíncrono é um tópico razoavelmente avançado e é aconselhada a leitura dos módulos Primeiros Passos com Javascript e Elementos construtivos do Javascript antes de continuar.

Se você não estiver familiarizado com os conceitos de programação assíncrona, a sugestão é iniciar com o artigo Conceitos gerais da programação assíncrona desse módulo. Caso contrário, você pode provavelmente pular para o módulo Introdução ao Javascript Assíncrono.

**Nota:** Se você está estudando a partir de um computador/tablet/ outro dispositivo onde não é capaz de criar seus próprios arquivos, é possível executar os códigos de exemplo (a maioria deles) em plataformas como JSBin ou Thimble.

Guias
-----

Conceitos gerais da programação assíncrona

Nesse artigo vamos explorar um número de conceitos importantes relacionados à programação assíncrona e como aparece nos browsers Web. Você deve entender estes conceitos antes de seguir adiante através dos outros artigos neste módulo.

Introdução ao Javascript Assíncrono

Nesse artigo vamos recapitular brevemente os problemas associados ao Javascript síncrono e introduzir algumas das diferentes técnicas do Javascript assícrono que irá encontrar mais a frente, mostrando como essas técnicas podem nos ajudar a resolver tais problemas.

Javascript assícrono cooperativo: Timeouts e intervalos

Aqui contemplamos os métodos tradicionais que o Javascript possui disponível para executar código de forma assíncrona após decorrido um certo periodo de tempo ou em um intervalo regular (e.g. um determinado número de vezes por segundo), discutir sua utilidade e perceber alguns problemas inerentes a eles.

Manipulando elegantemente operações assíncronas com Promises

Promises são um novo recurso da linguagem Javascript que permitem adiar ações até que a ação anterior esteja concluída ou responder com falha. Isso é extremamente útil para montar uma sequência de operações para que funcione corretamente. Este artigo lhe orienta como as Promises funcionam, onde verá elas sendo utilizadas em WebAPIs (en-US). Também aprenderá como escrever suas próprias promises.

Facilitando a programação assícrona com async e await

Promises podem ser um pouco complexas de construir e entender. Por esse motivo, os navegadores modernos implementado funções `async` e o operador `await`. O primeiro permite que funções padrão se comportem implicitamente de forma assíncrona com promises, enquanto que o último pode ser usado dentro de funções `async` para esperar por 'promessas' antes que a função continue. Isso faz com que o encadeamento de 'promessas' seja mais fácil de ler.

Escolhendo a abordagem correta

Para concluir este módulo, vamos considerar as diferentes técnicas de programação e as features que abordamos do começo ao fim, considerando quais e quando utilizar, com recomendações e advertências das armadilhas mais comuns.

Veja Também
-----------

* Programação Assícrona do livro online Eloquent JavaScript, por Marijn Haverbeke.

**Nota:** **Nota do tradutor**: A segunda edição do *Eloquent Javascript* foi traduzida pela comunidade brasileira do Javascript e está disponível em Javascript Eloquente - 2ª Edição. Até o momento da tradução deste artigo, a comunidade está trabalhando na conclusão da 3ª edição.