Last active
December 5, 2019 19:03
-
-
Save guerrerocarlos/33fb805a5f5823eb8fa73768e94028f9 to your computer and use it in GitHub Desktop.
Async JS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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