El asincronismo como ejemplo de la vida cotidiana:
Vas a un restaurant bar un viernes en la tarde después de una semana de agotamiento laboral, tienes hambre y mucha sed, así que realizas el siguiente pedido al mesero:
Pero, mientras esperas el platillo fuerte pides:
Resulta que hay demasiada gente en el restaurante, ya pasaron 10 minutos, te acabaste la botana y la cerveza ligera, y como aún no te sirven el molcajete, le hablas al mesero y le pides:
El mesero te vuelve a servir la botana y el bote de inmediato
Ya pasaron 20 minutos y estás a punto de cancelar el pedido inicial cuando de pronto te llega tu molcajete y tu tarro de cerveza oscura extra fría.
¡A COMER Y TOMAR QUE EL MUNDO SE VA A ACABAR!
Ahora veamos esto en código:
functionservirBotana(numPedido) { // No hay tiempo de esperaconsole.log('Pedido '+numPedido+': Botana servida');
}
functionservirBoteCervezaLigera (numPedido) { // No hay tiempo de esperaconsole.log('Pedido '+numPedido+': Bote de cerveza ligera servido');
}
functionservirTarroOscuro (numPedido) { // No hay tiempo de esperaconsole.log('Pedido '+numPedido+': Tarro de cerveza oscura servido');
}
functionprepararMolcajete(numPedido, callback) { // Tiempo de espera de 20Mins
setTimeout(function () {
callback(numPedido);
}, 6000); // Utilizamos 6 segundos que representan 20 minutos porque no manches xD
}
let numPedido = 1;
console.log('*** Pedido 1 realizado, lo están preparando ....');
prepararMolcajete(numPedido, function (numPedido) {
console.log('Pedido '+numPedido+': Molcajete servido');
servirTarroOscuro(numPedido);
console.log('* Pedido 1 servido');
});
numPedido = 2;
console.log('* Pedido 2 realizado');
servirBotana(numPedido);
servirBoteCervezaLigera(numPedido);
console.log('* Pedido 2 servido');
numPedido = 3;
setTimeout(function () { // Después de 10 minutos de esperaconsole.log('* Pedido 3 realizado');
servirBotana(numPedido);
servirBoteCervezaLigera(numPedido);
console.log('* Pedido 3 servido');
}, 3000); // Utilizamos 3 segundos que representan 10 minutos porque no manches xD
Puntos importantes en este ejemplo:
En este ejemplo sólo se considera el uso de los callbacks, pues es una tema que se complica mucho más que el uso de promesas y fetch. Espero les sirva el aporte.