–Que es una Promesa–
Una promesa es un objeto que nos permitira ordenar las funciones callback que se llevan a cabo asincronamente. Es muy importante usar Promesas debido a que evitan el llamado “callback hell”, que consistia en llamar consequentemente una cantidad enorme de callbacks dificultando asi lectura del codigo.
Una promesa tiene un parametro, que es una funcion callback la cual tiene dos parametros, el primero nos informa si la promesa ha realizado con exito la conexion al API por ejemplo, y el segundo nos informara si la promesa ha sido rechazada debido a un error (Es como una especie de funcion con dos tipos de return, en el cual solo puede aceptar uno ). Estos datos son informativos sobre el estado de la promesa. Ahora si queremos ejecutar una accion en base a esta informacion deberiamos usar respectivamente “.then()”, significa que si la promesa se cumplio “entonces()” haz esto, pero si la promesa ha sido rechazada “.catch()” haz esto otro.
Aqui un ejemplo de como escribir una Promesa:
let miPrimeraPromesa = newPromise((resuelta, rechazada) => {
// Llamamos resueta(...) cuando lo que haciamos asincronamente fue exitoso, y rechazado(...) cuando fallo.//En este ejemplo usaremos setTimeout(...) para simular codigo asincrono. // Por lo general, se usa mas comunmente para XHR o un HTML5 API.
setTimeout( function() {
resuelta("Exito!") // Todo fue de maravilla!
}, 250)
})
miPrimeraPromesa.then((mensajeExito) => {
//mensajeExito es lo que hemos pasado dentro de funcion resuelta(...) anteriormente.//No tiene por que ser siempre un string, en este caso lo es.console.log("Yay! " + mensajeExito)
});
–Promise.all–
Cuando haces multiples promesas estas pueden ser aceptadas o no, por lo tanto la ejecucion de respuesta puede variar todo el rato. Para ello se puede emplear el metodo Promise.all(), que tiene como argumento un array de promesas. Estas se ejecutaran y como el viejo dicho “uno para todos y todos para uno” si falla uno fallasn todos, es decir que el ".then()"se ejecutara una vez se hallan realizado todas las peticiones, y se ejecutara una accion una a una.
–.Fetch()–
A este metodo tan solo tendremos que aniadirle la url de la API de la que deseamos obtener datos, y este se encarga de hacer la promesa. Por lo que sencillamente solo necesitas aniadir los “.then()” y “.catch()” respectivamente.
El problema es que normalmente, este devuelve jason, que es un lenguaje de datos, por lo que para traducir este a javascript, necesitamos aplicar otra promesa en este caso, “jason()”. por lo que otro “.then()” va a ser necesario. Y ya por ultimo podemos acceder a la propiedad que estabamos buscando.
Ahora para encadenar promesas, acuerdate que necesitas retornar en cada “.then()” una promesa y ya por fuera del “.then()” le agregas su “.then()” correspondiente.