Promises
As Promises
representam uma abordagem mais moderna e eficiente para lidar com operações assíncronas no JavaScript. Anteriormente, o uso predominante eram as chamadas callback functions, que frequentemente levavam a um problema conhecido como callback hell, dificultando a leitura e manutenção do código devido ao encadeamento excessivo de callbacks.
Os 3 estados de uma Promise
:
pending
: Representa uma promessa que ainda está sendo processada (pendente).fulfilled
: Representa uma promessa que foi processada com sucesso (resolvida).rejected
: Representa uma promessa que foi rejeitada devido a algum erro durante o processamento.
Sintaxe
A criação de uma Promise
envolve a instância de um objeto Promise
, que recebe duas funções como argumentos: resolve
e reject
. A resolve
é chamada quando a operação assíncrona é bem-sucedida, enquanto a reject
é acionada em caso de falha.
new Promise((resolve, reject) => {
// Código assíncrono...
});
Exemplo
function randomTime(min, max) {
min *= 1000;
max *= 1000;
return Math.floor(Math.random() * (max - min) + min);
}
function wait(message) {
return new Promise((resolve, reject) => {
if (typeof message !== "string") {
reject("Valor inválido");
return;
}
setTimeout(() => {
resolve(message);
}, randomTime(1, 3));
});
}
wait("Frase 1")
.then((response) => {
console.log(response);
return wait("Frase 2");
})
.then((response) => {
console.log(response);
return wait("Frase 3");
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});