4º. 1er cuatrimestre. Itinerario de Sistemas de la Información. Grado en Ingeniería Informática. ULL
Nos quedamos generalizando la función asyncMap
para que sea más genérica:
let asyncMap = function(inputs, fun, callback){
// Write your code here
for(let i=0; i < inputs.length; i++) {
fun(inputs[i], (err, data) => {
/*
si hubieron errores llamar a callback con el error
si no si es el último que termina llamara a callback con (null, array de resultados)
si no hay que guardar el resultado parcial en el array de resultados
*/
})
}
}
Tenemos también que generalizar la función de secuencialización para que admita cualquier tipo de función asíncrona y no sólo readFile
:
function readFilesSerially(files, callback) {
let counter = 0;
let results = [];
let auxcallback = (err, data) => {
if (err) {
callback(new Error("Ocurrió un error! " + err.message))
}
else {
results.push(data)
counter++;
if (counter < files.length)
fs.readFile(files[counter], "utf-8", auxcallback)
else {
// se han leido secuencialmente todos los ficheros
callback(null, results)
}
}
}
fs.readFile(files[0], "utf-8", auxcallback);
}