Sistemas y Tecnologías Web: Servidor

Master de II. ULL. 1er cuatrimestre


Organization ULL-MII-SYTWS-2122   Classroom ULL-MII-SYTWS-2122   Campus Virtual SYTWS   Chat Chat   Profesor Casiano

AsyncMap

Descripción de la Práctica

Escriba un programa Node.js que usando fs.readFile lea en paralelo un conjunto de ficheros pasados en vía de comandos y produzca como salida la concatenación de los mismos en el orden especificado. Evite usar fs.readFileSync y use fs.readFile(path[, options], callback):

1
$ concat -f one.txt -f two.txt -f three.txt -o salida.txt

commander

Con commander es posible indicar una opción que se puede repetir

1
2
3
4
5
6
7
const program = require('commander');
function collect(value, previous) {
  return previous.concat([value]);
}
program.option('-c, --collect <value>', 'repeatable value', collect, []);
program.parse(process.argv);
console.log(program.collect)
1
2
$ node repeatable-option-commander.js -c a -c b -c c
[ 'a', 'b', 'c' ]

Requisitos

  1. Lea la sección The Async Module de los apuntes y encuentre una solución usando Async. Considere la posibilidad de excepciones debidas a que alguno de los ficheros no exista
  2. Encuentre una solución sin hacer uso de Async ¿Cómo lo haría?
  3. Haciendo abstracción de la solución encontrada en el paso anterior escriba una función asyncMap que funcione como el map del módulo Async:
1
  asyncMap(inputs, (item, cb) => fs.readFile(item, cb), (err, contents) => { ... });

Versiones usadas en este texto

Versiones usadas de los módulos en los ejemplos:

1
➜  daniel-alu0101040882 git:(main) ✗ jq '.dependencies' package.json 
1
2
3
4
{
  "async": "^3.2.0",
  "commander": "^6.2.0"
}

Referencias

Comment with GitHub Utterances