Atrasos e operações assíncronas frequentemente representam um desafio no desenvolvimento de software, especialmente quando se trata de lidar com callbacks. É aqui que Promises entram em cena - um conceito poderoso que ajuda a manter a clareza do seu código e reduzir a complexidade das operações assíncronas.
Com este tutorial, você mergulhará no mundo das Promises. Você verá como funcionam e como trabalham com a Fetch API em JavaScript para realizar requisições HTTP e processar as respostas de forma significativa. Vamos explorar juntos as vantagens e os conceitos fundamentais das Promises.
Principais insights
- Promises servem para gerenciar operações assíncronas e fornecer seus resultados em uma estrutura clara.
- A Fetch API é um método moderno para realizar requisições HTTP, que suporta Promises nativamente.
- Com os métodos then() e catch(), você pode trabalhar com os resultados e erros das Promises, sem cair em um inferno de callbacks.
Guia passo a passo
Passo 1: Introdução à Fetch API
A Fetch API oferece uma maneira simples de realizar requisições HTTP. Está disponível na maioria dos navegadores modernos e usa Promises para retornar a resposta da requisição. Você começará chamando a função fetch().
Aqui está um exemplo de como você pode fazer uma simples requisição GET a um servidor para receber dados HTML. Você simplesmente informa a URL como parâmetro.

Passo 2: Processando a Resposta
Após a conclusão da operação Fetch, você receberá uma resposta. Esta resposta é inicialmente também uma Promise, que você pode processar com o método then(). Neste passo, você demonstrará como obter o primeiro status e os cabeçalhos da resposta.
É importante observar que os objetos de resposta também não contêm diretamente os dados de resposta, mas apenas informações básicas como status e cabeçalhos.
Passo 3: Acessando o Corpo da Resposta
Agora vem a parte interessante - a leitura do conteúdo do corpo. Você pode usar o método response.text() para obter o texto da resposta HTTP. Este método retorna mais uma vez uma Promise, que você também pode acessar com then().
Neste passo nós explicamos que a leitura do texto é uma operação assíncrona, para a qual você novamente precisa do conceito de Promise.
Passo 4: Evitando o Inferno dos Callbacks
Se você quiser processar várias operações assíncronas em sequência (por exemplo, Fetch e depois ler o texto), você poderá ver que não é necessário aninhar cada vez mais para processar os resultados. Em vez disso, você pode trabalhar no mesmo nível, retornando Promises a cada vez.
Isso significa que você pode chamar o método then() também dentro do método then() da Promise anterior, mantendo seu código mais organizado.
Passo 5: Tratamento de Erros com catch
Erros são uma parte inevitável do desenvolvimento de software. Com o método catch() das Promises, você pode reagir a erros. Por exemplo, se você estiver em uma situação onde a requisição falha ou você encontra um erro de rede, o método catch() será chamado.
Aqui mostramos como lidar elegantemente com erros e torná-los compreensíveis para detectar possíveis problemas precocemente.

Passo 6: Criando suas Próprias Promises
Neste passo, você aprenderá como criar suas próprias Promises. Para isso, você usará o método new Promise(), onde passará uma função que determina a lógica assíncrona. Utilizaremos a função setTimeout para simular um atraso e mostrar a devolução de um valor.
Passo 7: Usando resolve e reject
Dentro da Promise criada, você pode chamar as funções resolve e reject para indicar se a Promise foi concluída com sucesso ou falhou. Isso lhe dá controle para gerenciar os diferentes fluxos da sua aplicação de forma flexível.
Passo 8: Capacidade de Encadeamento das Promises
Finalmente, você pode observar que as Promises têm a capacidade de encadeamento. Isso significa que você pode chamar os métodos then() e catch() em sequência para tornar o manuseio de operações assíncronas ainda mais fácil e legível.
Criar uma cadeia de Promises permite que você mantenha uma visão clara da estrutura do seu código, não importa quão complexa seja a lógica.
Resumo - Introdução às Promises do JavaScript
É evidente que as Promises são uma ferramenta indispensável no desenvolvimento moderno de JavaScript. Elas promovem o manuseio limpo e legível de operações assíncronas e tornam fácil trabalhar com requisições HTTP, sem ser oprimido por funções de callback.
Perguntas Frequentes
O que é uma Promise?Uma Promise é um objeto que representa a eventualidade de uma operação assíncrona e retorna seu resultado assim que ela é concluída.
Para que serve a Fetch API?A Fetch API é utilizada para realizar requisições HTTP de forma simples e eficiente, utilizando Promises.
Como eu trato erros em Promises?Erros são tratados com o método catch(), que pode seguir cada Promise.
Posso criar minhas próprias Promises?Sim, você pode criar suas próprias Promises com o método new Promise() e usar as funções resolve e reject.
Promises são síncronas ou assíncronas?Promises são assíncronas e permitem que o JavaScript continue a execução enquanto aguarda o resultado de uma operação assíncrona.