Junior
Qual é a diferença entre usar Promise e a sintaxe async/await?
sobes.tech IA
Resposta da IA
Promise representa um objeto que reflete a conclusão ou rejeição de uma operação assíncrona. Gerencia fluxos assíncronos usando callbacks .then() e .catch().
async/await é um açúcar sintático sobre Promise, que torna o código assíncrono mais legível e semelhante ao síncrono. Uma função marcada como async sempre retorna uma Promise. O operador await só pode ser usado dentro de funções async e pausa a execução até que a Promise seja resolvida ou rejeitada, retornando seu resultado ou lançando uma exceção.
| Aspeto | Promise | Async/Await |
|---|---|---|
| Legibilidade | Requer cadeias .then() e .catch() |
Semelhante ao código síncrono, fluxo linear |
| Tratamento de erros | Usa .catch() |
Usa blocos try...catch |
| Fluxo de execução | Gerido por callbacks | Pausa/reinicia a função |
| Valor devolvido | Promise | Promise (para funções async) ou resultado de Promise (para await) |
| Dependência | Mecanismo independente | Baseado em Promise |
Exemplo com Promise:
// Exemplo com Promise
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Dados recebidos (Promise)");
}, 1000);
});
}
fetchDataPromise()
.then(data => console.log(data))
.catch(error => console.error(error));
Exemplo com async/await:
// Exemplo com async/await
function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Dados recebidos (async/await)");
}, 1000);
});
}
async function showData() {
try {
const data = await fetchDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
showData();