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);