Promessas (Promises) são um recurso do JavaScript para manipular operações assíncronas. Elas representam um valor que pode estar disponível agora, no futuro, ou nunca. Promessas fornecem uma maneira de lidar com a eventualidade de uma operação assíncrona: sucesso, erro ou ainda em execução.
Criar uma Promise:
Promise
. Este construtor recebe uma função chamada executor
que por sua vez aceita dois argumentos: resolve
e reject
. Estes são métodos usados para resolver ou rejeitar a promessa, respectivamente.Exemplo:
let promessa = new Promise((resolve, reject) => {
let concluido = true; // Simulação de uma operação
if (concluido) {
resolve("Operação concluída com sucesso!");
} else {
reject("Operação falhou!");
}
});
Usar uma Promessa:
.then()
, .catch()
, e .finally()
. .then()
é chamado quando a promessa é resolvida, .catch()
é chamado se a promessa é rejeitada, e .finally()
é chamado após a promessa ser resolvida ou rejeitada, servindo para executar código que deve acontecer após a promessa, independentemente do resultado.Exemplo:
promessa
.then(result => {
console.log(result); // "Operação concluída com sucesso!"
})
.catch(error => {
console.error(error); // "Operação falhou!"
})
.finally(() => {
console.log("Promessa finalizada.");
});
.catch()
pode capturar erros de qualquer passo na cadeia de promessas.Async/await
é uma sintaxe especial introduzida no ES8 (ECMAScript 2017) que simplifica a maneira de escrever código assíncrono, tornando-o mais legível e fácil de entender, especialmente em comparação com cadeias de promessas. Essa sintaxe é uma extensão do modelo de promessas e não o substitui.
Funções async
:
async
é usada antes de uma declaração de função para indicar que a função irá retornar uma promessa. Qualquer valor retornado pela função será automaticamente encapsulado em uma promessa.Exemplo de Função async
:
async function obterDados() {
return "Dados carregados";
}
obterDados().then(console.log); // Saída: Dados carregados
Palavra-chave await
:
await
é usada para pausar a execução de uma função async
até que uma promessa seja resolvida ou rejeitada. Ela só pode ser usada dentro de funções async
e ajuda a esperar por uma operação assíncrona de maneira que se assemelha a uma operação síncrona/sequencial.Exemplo com await
:
async function carregarUsuario() {
let resposta = await fetch('<https://api.usuario.com>');
let usuario = await resposta.json();
return usuario;
}