Promises em JavaScript

Promises são uma das ferramentas mais importantes em JavaScript para lidar com operações assíncronas, como chamadas de API e tempo de espera de funções. Elas permitem que seu código continue a ser executado enquanto espera por uma operação para ser concluída, evitando bloqueios e melhorando o desempenho. Neste post, vamos ver o que são Promises em JavaScript, como funcionam e como você pode usá-las para criar um código JavaScript mais eficiente e organizado!

1. O que é uma Promise?

Uma Promise é um objeto que representa a eventual conclusão ou falha de uma operação assíncrona. Ela tem três estados:

  • Pending (Pendente): Estado inicial, a operação ainda não foi concluída;
  • Fulfilled (Concluída): A operação foi bem-sucedida;
  • Rejected (Rejeitada): A operação falhou.

2. Criando uma Promise

Para criar uma Promise, usamos o construtor new Promise, que recebe uma função com dois argumentos: resolve (chamado quando a operação é bem-sucedida) e reject (chamado quando ocorre uma falha).

const minhaPromise = new Promise((resolve, reject) => {
  let sucesso = true;
  
  if (sucesso) {
    resolve("A operação foi bem-sucedida!");
  } else {
    reject("A operação falhou.");
  }
});

3. Consumindo uma Promise com .then e .catch

Depois de criar uma Promise, você pode consumir o resultado usando o método .then() para capturar o sucesso e .catch() para capturar o erro.

minhaPromise
  .then((mensagem) => {
    console.log(mensagem); // "A operação foi bem-sucedida!"
  })
  .catch((erro) => {
    console.error(erro); // "A operação falhou."
  });

4. Lidando com várias Promises com Promise.all

Promise.all permite que você execute várias Promises ao mesmo tempo e receba um resultado quando todas elas forem concluídas. Ele é útil para carregar dados múltiplos simultaneamente.

const promessa1 = Promise.resolve(3);
const promessa2 = new Promise((resolve) => setTimeout(resolve, 1000, "pronto!"));
const promessa3 = fetch("https://api.example.com/dados");

Promise.all([promessa1, promessa2, promessa3])
  .then((resultados) => {
    console.log(resultados);
  })
  .catch((erro) => {
    console.error("Um erro ocorreu:", erro);
  });

5. Usando async/await com Promises

A introdução de async/await simplificou a forma de lidar com Promises, tornando o código mais legível. await pausa a execução da função até que a Promise seja concluída.

async function executarOperacao() {
  try {
    const resposta = await fetch("https://api.example.com/dados");
    const dados = await resposta.json();
    console.log(dados);
  } catch (erro) {
    console.error("Erro ao buscar dados:", erro);
  }
}
executarOperacao();

6. Outros métodos úteis: Promise.race e Promise.allSettled

  • Promise.race: Retorna a primeira Promise que for concluída, seja ela resolvida ou rejeitada.
  • Promise.allSettled: Aguarda todas as Promises serem concluídas, mas retorna o resultado de todas elas, incluindo as que foram rejeitadas.

Promises são fundamentais para qualquer desenvolvedor JavaScript que trabalha com operações assíncronas.

QUER SER UM PROGRAMADOR FULL-STACK E DOMINAR AS PRINCIPAIS TECNOLOGIAS DO MERCADO?

Aprenda através de projetos reais e aulas práticas. São 20 cursos completos + cursos bônus. Grupos privados exclusivos, atualizações constantes e lives semanais.

Python, PHP, Java Script, CSS, Node, Angular JS, MySQL, Photoshop, Flutter, AWS, Apache e muito mais!

CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre promises em JavaScript? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *