Promises no Javascript: No JavaScript moderno, as Promises são a principal ferramenta para gerenciar o código assíncrono. Uma Promise é um objeto que atua como um “placeholder” (valor substituto) para o resultado eventual (sucesso ou falha) de uma operação assíncrona.
Elas resolvem os problemas de aninhamento e tratamento de erros dos Callbacks, fornecendo uma estrutura mais clara e encadeável.
1. Os Três Estados de uma Promise
Uma Promise é um objeto de estado finito. Uma vez que o estado muda de pending para fulfilled ou rejected, ele não pode mudar novamente.
| Estado | Significado | Como Transiciona |
pending | Pendente. A operação assíncrona ainda não terminou. | Estado inicial. |
fulfilled | Resolvida/Sucesso. A operação foi concluída com sucesso e retornou um valor. | Chama resolve(valor). |
rejected | Rejeitada/Falha. A operação falhou e retornou um erro. | Chama reject(erro). |
Exemplo Básico de Criação
Você cria uma Promise manualmente usando o construtor Promise, que recebe uma função executora com dois argumentos: resolve e reject.
JavaScript
const buscarDados = new Promise((resolve, reject) => {
let sucesso = Math.random() > 0.5;
setTimeout(() => {
if (sucesso) {
resolve("Dados carregados!"); // Muda o estado para fulfilled
} else {
reject(new Error("Erro de conexão.")); // Muda o estado para rejected
}
}, 1000);
});
2. Consumindo Promises: then(), catch() e finally()
Para lidar com o resultado de uma Promise, você usa métodos que se conectam aos seus estados finais.
A. .then()
Usado para agendar uma callback para quando a Promise for resolvida (fulfilled). O .then() aceita dois argumentos: a função de sucesso e, opcionalmente, a função de falha.
JavaScript
buscarDados.then(
(resultado) => {
console.log("Sucesso:", resultado); // Lida com o 'resolve'
},
(erro) => {
console.error("Falha:", erro.message); // Lida com o 'reject'
}
);
B. .catch()
Uma forma mais clara e recomendada de lidar com erros. Ele é um atalho para .then(null, onRejected).
JavaScript
buscarDados
.then((resultado) => console.log(resultado))
.catch((erro) => console.error("Erro capturado:", erro.message)); // Lida com qualquer reject anterior
C. .finally()
Executa um código sempre que a Promise é finalizada (seja fulfilled ou rejected). É útil para tarefas de limpeza.
JavaScript
buscarDados.finally(() => {
console.log("Promise finalizada. O carregamento acabou.");
});
3. Encapsulamento de Promises (Chaining)
A maior vantagem das Promises é o seu encadeamento. Quando um .then() retorna um valor (não uma Promise), o próximo .then() recebe esse valor. Crucialmente, quando um .then() retorna outra Promise, a cadeia pausa e espera que a nova Promise seja resolvida antes de continuar.
Isso elimina o aninhamento profundo:
JavaScript
buscarDados // Promise 1
.then((dados) => {
console.log("1. Processado:", dados);
return dados.toUpperCase(); // Retorna um VALOR, que vai para o próximo .then
})
.then((dadosUpper) => {
console.log("2. Transformado:", dadosUpper);
return outraFuncaoAssincrona(dadosUpper); // Retorna uma NOVA PROMISE 2. A cadeia PAUSA aqui.
})
.then(() => {
console.log("3. Sucesso após a Promise 2."); // Só executa após a Promise 2 terminar
})
.catch((erro) => {
// Captura qualquer erro de Promise 1, Promise 2, ou de qualquer .then intermediário.
console.error("Erro na cadeia:", erro);
});
4. Gerenciando Múltiplas Promises
Promise.all(iterable): Espera que todas as Promises no iterable sejam resolvidas. Se qualquer uma for rejeitada, ela rejeita oPromise.allimediatamente. Retorna um Array de resultados.Promise.race(iterable): Retorna o resultado da primeira Promise que for resolvida ou rejeitada.
✅ Conclusão Promises no Javascript
Promises no Javascript: Promises são a fundação moderna da assincronia em JavaScript. Elas substituem o Callback Hell por um fluxo de controle claro, estruturado e encadeável, facilitando o tratamento centralizado de erros via .catch(). Dominar o conceito de Objeto de Valor Futuro e o encadeamento é o passo essencial para escrever código assíncrono profissional.
Toda jornada tem um início, e o início para se tornar um desenvolvedor web é dominar as seguintes tecnologias, que você encontra aqui mesmo:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:












