0

This was marked as a duplicate question because there is possibly an async issue with it, but I've tried adding a promise to it and it didn't help. If it is an ansync problem, can someone explain it to me?

I'm working on a project where I need to analyze and manipulate data in a txt file using. I'm using Readline to loop through each line of the txt file and I'm able to manipulate the data like I want to. My issue is that I can't return the data, I can only console.log() it. If I return it I get a message that the return contains 'invalid characters'. Is there a way to get around this? Thanks!

const rl = readline.createInterface({
  input: fs.createReadStream(input_file_path)
})

let arrofData = [];

rl.on('line', (line) => {
  line = JSON.parse(line);
  arrofData.push(line.user, line.action, line.timestamp);
})    


rl.on('close', () => {
  let bots = [];
   for (let i = 0; i < arrofData.length; i++) {
   let counter = i;
   let dataToCheck = [];
   while (dataToCheck.length < 20) {
     dataToCheck.push(arrofData[counter]);
     counter++;
   }
   if (!dataToCheck.length - 1) {
     return bots;
   }
   let time = dataToCheck[dataToCheck.length - 1][2] - dataToCheck[0][2];
  if (time <= 480) {
    let filterForSameUser = dataToCheck.filter((username) => username[0] !== dataToCheck[0][0]);
    if (filterForSameUser.length === 0) {
      if (!bots.includes(dataToCheck[0][0])) {
        bots.push(dataToCheck[0][0]);
      }
    }
  }
}
console.log(bots);
return bots;
})
  • `rl.on` doesn't do it anything with the value you return from its callback, so there is no point returning anything anyway. Why do you want to do that? There is no point. – Paul Apr 09 '18 at 03:30
  • You need to accomplish it with callbacks, have you sorted it out? – Munim Munna Apr 09 '18 at 16:48

0 Answers0