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();