Promesas
    
        
            - 
                Son similares a los callbacks (funciones que se pasan como argumentos a otras fucniones), pero simplifican el proceso asíncrono
            
- 
                Estados:
                
                    - 
                        pending
                    
- 
                        resolved
                    
- 
                        rejected
                    
 
- 
                Declaración:
                
                    - 
                        
                            let example = new Promise(function(resolve, reject)) { 
 setTimeout(() => {
 if (whatever) {
 resolve('OK')
 } else {
 reject('NOT OK')
 }
 }, 1000)
 }
- 
                        resolveyrejectson callbacks, es decir, hacen referencia a funciones
- 
                        Por tanto, hay que crear una función para cada caso. Ej.: 
                        
                            - 
                                para el parámetro resolve, creamos una función llamada callbackResolve que sustituirá al parámetroresolvey hará lo que se le indique con su value
                                    - 
                                        Ej.: 
                                        
                                            const callbackResolve = (value) => console.log('Result:', value); // Result: OK
                                        
 
- 
                                para el parámetro reject, creamos una función llamada callbackReject que hará lo propio con el value dereject
                                    - 
                                        Ej.:
                                        
                                            const callbackResolve = (value) => console.log('Result:', value); // Result: NOT OK
                                        
 
 
 
- 
                Invocación:
                
                    - 
                        
                            example.then(callbackResolve, callbackReject)
                        
 
- 
                Asincronía 
                
                    - 
                        Def.: código que tarda más en ejecutarse y afecta a la secuencialidad del resto
                    
- 
                        Las promesas son asíncronas, ya que se tarda cierto tiempo hasta que se devuelve lo que se ha requerido
                    
- 
                        Cuando utilizamos una función para retornar una promesa, tenemos que indicar que esa función va a ser asíncrona y que tenemos que esperar hasta obtener la respuesta para seguir ejecutando el resto del código:
                        
                            - 
                                
                                    async function example() { 
 const url = "http://...";
 const res = await fetch(url); // Esperamos a la llamada a la api
 const resJson = await res.json(); // Esperamos a que el método json la convierta para poder usar keys y values
 return resJson.name (por ej, si fuera solo un objeto con un campo name)
 }
- 
                                añadir try catchpara la gestión en caso de error
 
- 
                        También se puede manejar mediante thenycatch, pero es más flexible la manera anterior