📜  cadena promesas javascript (1)

📅  最后修改于: 2023-12-03 15:29:55.848000             🧑  作者: Mango

Cadena Promesas en JavaScript

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.

¿Qué es una promesa en JavaScript?

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.

¿Cómo funciona la cadena de promesas?

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
  });
Ejemplo de cadena de promesas

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:

  1. Realizar una llamada a la API para obtener el clima de una ciudad
  2. Obtener el resultado y mostrarlo en la consola

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.

Conclusión

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.