Sobes.tech
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();