📅  最后修改于: 2023-12-03 15:29:55.848000             🧑  作者: Mango
En JavaScript, la cadena de promesas es una técnica que se utiliza para encadenar funciones asíncronas y controlar el flujo de datos en un proceso.
Una promesa es un objeto que representa el resultado de una operación asincrónica. Una promesa puede tener 3 estados diferentes:
Pendiente
: el resultado de la operación aún no ha sido resuelto.Resuelta
: la operación ha finalizado con éxito y se ha obtenido un resultado.Rechazada
: la operación ha finalizado con error y no ha obtenido un resultado válido.Una promesa puede ser resuelta o rechazada solo una vez.
La cadena de promesas se utiliza para encadenar varias funciones asíncronas de manera que se obtiene un flujo de datos controlado y ordenado. Para ello, se utiliza el método then()
, que se encarga de ejecutar una función cuando la promesa ha sido resuelta con éxito. También existe el método catch()
, que se encarga de ejecutar una función cuando la promesa ha sido rechazada.
La sintaxis de una cadena de promesas es la siguiente:
promesa1
.then(resultado1 => {
// hacer algo con resultado1
return promesa2;
})
.then(resultado2 => {
// hacer algo con resultado2
return promesa3;
})
.then(resultado3 => {
// hacer algo con resultado3
})
.catch(error => {
// manejar el error
});
Supongamos que queremos hacer una llamada a una API para obtener el clima de una ciudad y luego mostrar ese resultado en la consola. El proceso sería el siguiente:
Para ello, utilizaremos la API abierta de OpenWeatherMap y su endpoint para obtener el clima actual de una ciudad. La función que hará la llamada a la API será getWeather(city)
, que recibirá el nombre de la ciudad como parámetro.
function getWeather(city) {
return fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${API_KEY}`)
.then(response => response.json())
.then(data => data.weather[0].main)
.catch(error => console.log(error));
}
Ahora, podemos utilizar la cadena de promesas para encadenar las operaciones necesarias. El proceso sería el siguiente:
getWeather("Madrid")
.then(clima => {
console.log(`El clima en Madrid es ${clima}`);
return getWeather("Barcelona");
})
.then(clima => {
console.log(`El clima en Barcelona es ${clima}`);
})
.catch(error => console.log(error));
En este ejemplo, se hará una llamada a la API para obtener el clima de Madrid, y una vez obtenido, se mostrará por consola. A continuación, se realizará una llamada a la API para obtener el clima de Barcelona, y se mostrará los resultados por consola. Si se produjera algún error en alguna de las llamadas a la API, sería manejado en la parte catch
de la cadena.
La cadena de promesas es una técnica muy útil para controlar el flujo de datos en procesos asíncronos en JavaScript. Permite encadenar varias operaciones de forma ordenada, controlando la ejecución en cada etapa del proceso.