Прочитать первые X строк отсортированных данных из потока? - PullRequest
0 голосов
/ 14 февраля 2019

Относительно новый с Node.Пытаюсь работать с потоками.

Я хочу прочитать и отсортировать большой файл, содержащий цифры (разделенные новой строкой).Я отсортировал файл в соответствии с методом здесь (метод № 5, на самом деле указан в этом потоке), и пытаюсь настроить его так, чтобы он возвращал первые X строк из отсортированногоданные (var request = 5 в коде ниже только для тестирования).Я хотел бы показать это до записи данных.

var fs = require('fs'),
util = require('util'),
spawn = require('child_process').spawn,
sort = spawn('sort', ['-nr','../data/data.txt']),
writer = fs.createWriteStream('output.txt');

var start = Date.now();
var output = 'output.txt';

var request = 5;
var lineCount = 0;
var numbers;
var selection = [];

sort.stdout.on('data', function(data) {
    lineCount ++
    numbers = data.toString()
    // data.toString()
        .split('\n')
        .sort((a, b) => b-a)

    selection = numbers.slice(0, request)
        // 
        // .forEach(record => writer.write(record + '\n'))
    },
)

sort.on('exit', function(code) {
    if (code) {
        // handle error
        console.log(code);
    }
    // writer.end()    
    // console.log(lineCount);
    let array = numbers.slice(0, request);
    console.log(selection);
    var closetime = Date.now();
    console.log('Time. ', (closetime -start) /1000, ' secs');
});

sort.stderr.on('data', function(data) {
    // handle error...
    console.log('stderr: ' + data);
});

Я не могу заставить его работать независимо от того, помещаю ли я свой код в раздел .on('data' или в раздел .on('exit'.Любые предложения?

Я упомянул здесь большое количество потоков о переполнении стека, включая этот , этот , этот при чтении определенногострока через nodejs , читает первые две строки через Nodejs .

Последнее звучит так, как будто оно должно быть тем, что мне нужно, но я не могу заставить его работать в моем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...