tengo este codigo:
const lineReader = require('line-reader'); var truevar = false; async function readLines(filename, processLine) { return new Promise((resolve, reject) => { lineReader.eachLine(filename, (line, last, callback) => { if (!callback) throw new Error('panic'); if (truevar) { // I wanna stop/finish the function here } else { processLine(line) .then(() => last ? resolve() : callback()) .catch(reject); }; }); }) };Y así es como llamo a la función readLines:
await readLines('somefile.txt', async (line) => { await delay(1000) // 1 second other_function(line); });Necesito dejar de leer el archivo y terminar todo el proceso una vez que llegue a cierto punto. He leído los documentos del lector de línea, pero no encontré nada. También traté de hacerlo de la manera sucia con "break"; etc., pero obviamente no terminará el trabajo y se atascará (no puedo volver a llamarlo a menos que vuelva a cargar el programa), por lo que es inútil.
EDITAR: Solucionado el problema. Olvidé volver a configurar truevar en falso para poder volver a llamar a la función.
Prueba esto:
lineReader.eachLine(filename, (line, last, callback) => { if (!callback) throw new Error('panic'); if (truevar) { // Add to stop reading cb(false); } else { processLine(line) .then(() => last ? resolve() : callback()) .catch(reject); }; });Descubrí por qué no pude volver a llamar a la función. No fue el problema con la función asíncrona que no se detuvo correctamente, simplemente no configuré el truevar de nuevo en falso, para poder volver a llamar a la función.