Iniciante Fundamentos

Promises

Uma Promise (promessa) representa um valor que ainda não existe, mas chegará no futuro. Ela substitui o aninhamento de callbacks por um código mais limpo.

Estados de uma Promise

  • pendente (pending): ainda em andamento.
  • resolvida (fulfilled): terminou com sucesso.
  • rejeitada (rejected): terminou com erro.

Usar then e catch

const fs = require("fs/promises");

fs.readFile("dados.txt", "utf8")
  .then((conteudo) => {
    console.log(conteudo);
  })
  .catch((erro) => {
    console.error("Erro:", erro.message);
  });

Criar uma Promise

Use resolve para sucesso e reject para erro:

function esperar(ms) {
  return new Promise((resolve, reject) => {
    if (ms < 0) {
      reject(new Error("Tempo inválido"));
      return;
    }
    setTimeout(() => resolve("Pronto!"), ms);
  });
}

esperar(1000).then((msg) => console.log(msg));

Encadear Promises

Cada then pode retornar um valor para o próximo:

esperar(500)
  .then((msg) => msg.toUpperCase())
  .then((maiusc) => console.log(maiusc));