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);
});