Skip to content

Instantly share code, notes, and snippets.

@guerrerocarlos
Last active December 5, 2019 19:03
Show Gist options
  • Save guerrerocarlos/33fb805a5f5823eb8fa73768e94028f9 to your computer and use it in GitHub Desktop.
Save guerrerocarlos/33fb805a5f5823eb8fa73768e94028f9 to your computer and use it in GitHub Desktop.
Async JS
var duracionTrabajos = {
pared: 1000,
piso: 2000
};
var arregloCasas = [
{
paredes: 5,
pisos: 5
},
{
paredes: 10,
pisos: 10
}
];
function trabajar(ms, i) {
console.log("👷‍♂️ Trabajando en casa", i);
return new Promise(resolve => setTimeout(resolve, ms));
}
var casasConstruidas = [];
async function construirPared(casa, i) {
await trabajar(duracionTrabajos.pared, i);
casa.paredes = casa.paredes + 1;
return casa;
}
async function construirPiso(casa, i) {
await trabajar(duracionTrabajos.piso, i);
casa.pisos = casa.pisos + 1;
return casa;
}
async function construirCasa(objeto, i) {
while (true) {
objeto = await construirPiso(objeto, i);
objeto = await construirPared(objeto, i);
console.log("Se construyó un piso y una pared de la casa", i);
}
}
if (require.main == module) {
(async () => {
console.log("Iniciando construcciones" + "\n");
if (arregloCasas.length > 0) {
for (var i = 0; i < arregloCasas.length; i++) {
console.log(
"Iniciando construcción de casa con: " +
arregloCasas[i].paredes +
" paredes y: " +
arregloCasas[i].pisos +
" pisos" +
"\n"
);
construirCasa(arregloCasas[i], i);
}
}
setInterval(() => {
arregloCasas.forEach((casa, i) => {
console.log(
`Casa ${i}:`,
casa.paredes,
"paredes y ",
casa.pisos,
"pisos"
);
});
}, 1000);
})();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment