JS promises otro ejemplo

 const apuestas = new Promise((resolve, reject) => {
        let total = 0;
        let veces = 10000;
        for (let i = 0; i < veces; i++) {
            for (let j = 0; j < veces; j++) {
                total += Math.random() * 10;
            }
        }
        console.log(total);
        total = total / (veces ** 2);
        if (total >= 5) {
            let win = 'Hemos ganado';
            resolve(win);
        } else {
            let loose = 'Hemos perdido';
            reject(loose);
        }
    })

    apuestas.then((result)=>{
        console.log(result);
    }).catch((error)=>{
        console.log(error);
    })
    console.log("Fin programa");

JS Promises

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