Sobes.tech
Junior

¿En qué consiste la diferencia entre async/await y Promise?

sobes.tech AI

Respuesta de la IA

async/await es un azúcar sintáctico sobre las promesas. Permite escribir código asíncrono de manera más legible y similar a síncrono, usando las palabras clave async para funciones que contienen await para esperar la resolución de una promesa. Las promesas son objetos que representan la finalización (o fallo) de una operación asíncrona y su valor resultante.

Característica async/await Promesa
Sintaxis Más parecido al código síncrono. Usa métodos .then(), .catch(), .finally().
Legibilidad Generalmente más alta, especialmente en cadenas. Puede llevar a "Callback hell" en cadenas complejas.
Manejo de errores Usa try...catch estándar. Usa .catch() o el segundo argumento en .then().
Paralelismo Requiere usar explícitamente Promise.all() o Promise.allSettled(). Puede ser más explícito, pero menos legible sin async/await.
// Ejemplo con Promise
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Datos recibidos');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// Ejemplo con async/await
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Datos recibidos');
    }, 1000);
  });
}

async function processData() {
  try {
    const data = await getDataAsync();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

processData();