Entendendo Promises em JavaScript

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!