Sobes.tech
Junior

¿Cuál es la diferencia entre usar Promise y la sintaxis async/await?

sobes.tech AI

Respuesta de la IA

Promise representa un objeto que refleja la finalización o rechazo de una operación asíncrona. Gestiona flujos asíncronos mediante callbacks .then() y .catch().

async/await es un azúcar sintáctico sobre Promise, que hace que el código asíncrono sea más legible y parecido al síncrono. Una función marcada como async siempre devuelve un Promise. El operador await solo puede usarse dentro de funciones async y pausa la ejecución hasta que el Promise se resuelva o rechace, devolviendo su resultado o lanzando una excepción.

Aspecto Promise Async/Await
Legibilidad Requiere cadenas .then() y .catch() Se asemeja al código síncrono, flujo lineal
Manejo de errores Usa .catch() Usa bloques try...catch
Flujo de ejecución Gestionado por callbacks Pausa/reanuda la función
Valor devuelto Promise Promise (para funciones async) o resultado de Promise (para await)
Dependencia Mecanismo independiente Basado en Promise

Ejemplo con Promise:

// Ejemplo con Promise
function fetchDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Datos recibidos (Promise)");
    }, 1000);
  });
}

fetchDataPromise()
  .then(data => console.log(data))
  .catch(error => console.error(error));

Ejemplo con async/await:

// Ejemplo con async/await
function fetchDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Datos recibidos (async/await)");
    }, 1000);
  });
}

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

showData();