Promises
Promises são uma maneira de lidar com código assíncrono em JavaScript de forma mais legível e organizada. Uma Promise representa uma operação que ainda não foi concluída, mas que será concluída no futuro, como uma chamada de API, uma consulta a um banco de dados ou uma animação em um elemento da página.
Uma Promise pode estar em um de três estados:
Pendente (pending): quando a Promise ainda não foi concluída;
Resolvida (fulfilled): quando a operação foi bem-sucedida;
Rejeitada (rejected): quando ocorre um erro durante a operação.
A Promise é criada usando a palavra-chave new Promise(), seguida por uma função que recebe dois argumentos: resolve e reject. resolve é uma função que é chamada quando a operação é concluída com sucesso e retorna o valor resultante, enquanto reject é uma função que é chamada quando ocorre um erro e retorna o motivo do erro. Por exemplo:
const promessa = new Promise((resolve, reject) => {
const resultado = fazerOperacaoAssincrona();
if (resultado) {
resolve(resultado);
} else {
reject("Ocorreu um erro!");
}
});
Para acessar o resultado da Promise, usamos o método .then() para lidar com a operação bem-sucedida e .catch() para lidar com o erro. Por exemplo:
promessa
.then(resultado => {
console.log(resultado);
})
.catch(erro => {
console.log(erro);
});
Neste exemplo, usamos .then() para imprimir o resultado no console se a operação for bem-sucedida e .catch() para imprimir o erro se ocorrer um erro.
Além disso, também podemos encadear várias Promises usando o método .then(), criando uma sequência de operações assíncronas que são executadas uma após a outra. Isso é conhecido como "chaining". Por exemplo:
promessa
.then(resultado1 => {
return fazerOutraOperacaoAssincrona(resultado1);
})
.then(resultado2 => {
console.log(resultado2);
})
.catch(erro => {
console.log(erro);
});
Neste exemplo, executamos uma segunda operação assíncrona após a primeira ter sido concluída com sucesso, e imprimimos o resultado no console.