Enlaces:
https://developers.google.com/web/fundamentals/primers/promises?hl=es
https://scotch.io/tutorials/javascript-promises-for-dummies
https://www.codingame.com/playgrounds/347/javascript-promises-mastering-the-asynchronous/your-first-code-with-promises
https://flaviocopes.com/javascript-promises/
https://exploringjs.com/es6/ch_promises.html#sec_examples-promises
let pagaExtra = false; // Generación de la promesa let nuevoTelefono = new Promise( function (resolve, reject) { if (pagaExtra) { var telefono = { marca: 'Samsung', color: 'black' }; resolve(telefono); // fulfilled } else { var razon = new Error('Sin paga extra'); reject(razon); // reject } } ); //Consumir la promesa let comprar=function(){ nuevoTelefono.then( //La promesa se ha cumplido function(fulfilled){ console.log(fulfilled); } ).catch( //La promesa no se ha cumplido function(error){ console.log(error); } ) } comprar();
Añadimos console.log:
let pagaExtra = true; // Generación de la promesa let nuevoTelefono = new Promise( function (resolve, reject) { if (pagaExtra) { var telefono = { marca: 'Samsung', color: 'black' }; resolve(telefono); // fulfilled } else { var razon = new Error('Sin paga extra'); reject(razon); // reject } } ); //Consumir la promesa let comprar=function(){ console.log("inicio"); nuevoTelefono.then( //La promesa se ha cumplido function(fulfilled){ console.log(fulfilled); } ).catch( //La promesa no se ha cumplido function(error){ console.log(error); } ) console.log("fin"); } comprar();
Resultado:
inicio
fin
{marca: “Samsung”, color: “black”}
Con parámetros:
let comprar = function (pagaExtra) { let nuevoTelefono = new Promise( function (resolve, reject) { if (pagaExtra) { var telefono = { marca: 'Samsung', color: 'black' }; resolve(telefono); // fulfilled } else { var razon = new Error('Sin paga extra'); reject(razon); // reject } } ); nuevoTelefono.then( //La promesa se ha cumplido function (fulfilled) { console.log(fulfilled); } ).catch( //La promesa no se ha cumplido function (error) { console.log(error); } ) } comprar(true); comprar(false);