ULL-ESIT-INF-DSI-2122 / ull-esit-inf-dsi-21-22-prct10-async-fs-process-alu0101321219

ull-esit-inf-dsi-21-22-prct10-async-fs-process-alu0101321219 created by GitHub Classroom
0 stars 0 forks source link

Duda a la hora de devolver el número de palabras contadas (Ejercicio 2 - Práctica 10) #1

Closed aglezg closed 2 years ago

aglezg commented 2 years ago

https://github.com/ULL-ESIT-INF-DSI-2122/ull-esit-inf-dsi-21-22-prct10-async-fs-process-alu0101321219/blob/3bcdfcfb8e41eba7e830a80b5134fd2f7d4d1aa9/src/ejercicio-2.ts#L4-L32

Buenas tardes,

Para la realización del ejercicio 2 de la práctica 10 se pide calcular el número de ocurrencias de una palabra dentro de un determinado fichero implementando los comandos cat y grep y el uso de una expresión regular. Tal y como tengo desarrollado el código este cálculo funciona correctamente. El problema viene a la hora de devolver en la misma función la variable que almacena el número de palabras contadas.

Como se puede ver en el código, inicialmente esta variable se setea con un valor de cero.

let numberOfWords: number = 0;

Y más adelante es sobreescrita en el caso de realizar un match con el texto leído del fichero.

numberOfWords = grepOutput.match(wordRE)?.length!;

No obstante, este valor siempre se devuelve como 0. Intuyo que esto sucede dado a que estoy empleando una función asíncrona y por tanto no se espera a que acabe la ejecución del bloque fs.access para devolver dicha variable.

¿Habría alguna forma de hacer que se espera a que termine la ejecución de dicho bloque? ¿Podría plantearlo de otra manera?

@esegredo

esegredo commented 2 years ago

Hola Adrián, buenas tardes.

Tal y como les comenté en la última clase de teoría, a la hora de introducir el patrón callback, este es uno de los problemas que, precisamente, indiqué.

El ámbito del manejador que le pasas a fs.access es totalmente diferente al de la variable numberOfWords. Nunca vas a conseguir obtener el valor fuera de dicho manejador a no ser que escribas el método method1 utilizando el patrón callback. Repasa los apuntes para que caigas en la cuenta de lo que quiero indicarte.

Saludos.

aglezg commented 2 years ago

Perfecto, ya está solucionado!! Gracias!