Entendendo Promises em JavaScript

NodeJS 23 de Jan de 2024

As Promises são fundamentais para lidar com operações assíncronas em JavaScript, como chamadas de API ou leituras de arquivos. Vou te explicar como elas funcionam e mostrar alguns exemplos de código.

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

  1. Pending: Estado inicial, não cumprida nem rejeitada.
  2. Fulfilled: Operação completada com sucesso.
  3. Rejected: Operação falhou.

Exemplo Básico de uma Promise

let promise = new Promise(function(resolve, reject) {
  // Faz alguma coisa assíncrona e chama resolve ou reject
  setTimeout(() => {
    resolve("Dados carregados com sucesso!");
  }, 2000);
});

promise.then(
  result => console.log(result), // Exibe "Dados carregados com sucesso!" após 2 segundos
  error => console.log(error) // Exibe um erro, se houver
);

Encadeamento de Promises

Você pode encadear várias operações assíncronas usando .then():

function getDados() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve("Dados Iniciais");
    }, 2000);
  });
}

getDados()
  .then(dados => {
    console.log(dados); // Primeiros dados
    return "Mais dados";
  })
  .then(maisDados => {
    console.log(maisDados); // "Mais dados"
  });

Tratamento de Erros

Usamos .catch() para tratar erros em Promises:

getDados()
  .then(dados => {
    throw new Error("Erro ao processar dados");
  })
  .catch(error => {
    console.error(error); // Captura qualquer erro que ocorra durante as promises
  });

Concluindo

Promises são uma ferramenta poderosa para escrever código assíncrono mais legível e manutenível. Experimente incorporá-las em seus projetos para lidar com operações assíncronas!

Josias Pereira

Programador full-stack sênior e apaixonado por ensinar. No tempo livre adora compartilhar conhecimentos e experiências das tecnologias de desenvolvimento back-end e front-end que mais gosta.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.