Crea dos archivos en la misma carpeta, index.js y tasks.js
//index.js
//obtenemos los metodos desde tasks.js
const { taskOne, taskTwo } = require('./tasks.js');
//creamos una funcion asincrona con gestion de errores
async function main(){
try{
//este es codigo sequencial
//porque no pasa a la siguiente linea si no termina el anterior
console.time('Measuring time');
//medimos el tiempo que tardan las dos funciones
//carreritas
const results = await Promise.race([taskOne(), taskTwo()])
console.timeEnd('Measuring time');
console.log('Task One returned ', valueOne);
console.log('Task Two returned ', valueTwo);
}
catch(e){//mostramos errores si los hay
console.log(e)
}
}
main()//llamamos a la funcion asincrona
//tasks.js
//util nos permite usar como funcion asincrona cosas que funcionan como promesas
const util = require ('util');
//usamos util para usar setTimeout lo podamos usar como funcion asincrona
const sleep = util.promisify(setTimeout);
//module.exports envia una funcion u objeto
//vamos a simular tareas que podrĂan ser tareas asincronas
module.exports = {
async taskOne() {//metodo enviado
try{
throw new Error('Something wrong');// insertamos un error fictisio
await sleep(4000) //setTimeout de 4 seg
return 'ONE VALUE' //valor que arroja cuando se cumple
}
catch(e){
console.log(e)
}
},
async taskTwo() {//otro metodo enviado
try{
await sleep(2000)
return 'TWO VALUE'
}
catch(e){
console.log(e)
}
}
}