Это было помечено как повторяющийся вопрос, потому что с ним, возможно, связана проблема с асинхронностью, но я попытался добавить к нему обещание, и это не помогло. Если это проблема с ansync, может ли кто-нибудь мне ее объяснить?
Я работаю над проектом, в котором мне нужно анализировать и обрабатывать данные в текстовом файле, используя. Я использую Readline, чтобы перебирать каждую строку текстового файла, и я могу манипулировать данными, как я хочу. Моя проблема в том, что я не могу вернуть данные, я могу только console.info (). Если я верну его, я получу сообщение о том, что возврат содержит «недопустимые символы». Есть ли способ обойти это? Спасибо!
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.info(bots);
return bots;
})
Вам нужно сделать это с помощью обратных вызовов, вы разобрались?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


rl.onничего не делает со значением, которое вы возвращаете из его обратного вызова, поэтому в любом случае нет смысла возвращать что-либо. Почему ты хочешь это сделать? Нет никакого смысла.