Junior
Qual é a diferença entre async/await e Promise?
sobes.tech IA
Resposta da IA
async/await é um açúcar sintático sobre as promessas. Permite escrever código assíncrono de forma mais legível e semelhante a síncrono, usando as palavras-chave async para funções que contêm await para esperar a resolução de uma promessa. As promessas são objetos que representam a finalização (ou falha) de uma operação assíncrona e seu valor resultante.
| Característica | async/await | Promessa |
|---|---|---|
| Sintaxe | Mais parecido com código síncrono. | Usa métodos .then(), .catch(), .finally(). |
| Legibilidade | Geralmente mais alta, especialmente em cadeias. | Pode levar ao "Callback hell" em cadeias complexas. |
| Tratamento de erros | Usa try...catch padrão. |
Usa .catch() ou o segundo argumento em .then(). |
| Paralelismo | Requer uso explícito de Promise.all() ou Promise.allSettled(). |
Pode ser mais explícito, mas menos legível sem async/await. |
// Exemplo com Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Dados recebidos');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Exemplo com async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Dados recebidos');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();