Busboy не вызывает события в ожидаемом порядке при разборе CSV - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь использовать Busboy для анализа потока CSV следующим образом:

var result = [];
var busboy = new Busboy({ headers: req.headers });
busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
    file.pipe(csv.parse()).on('data', (data) => {
        console.log("data");
        console.log(data);
        result.push(data);
    });
    file.on('end', () => {
        console.log("result end");
        console.log(result);
    });
});
busboy.on('finish', () => {
    console.log("result finish");
    console.log(result);
    res.end();
});
req.pipe(busboy);

Однако, когда я это делаю, я получаю это:

data
[ 'test1@example.com' ]
result end
[ [ 'test1@example.com' ] ]
result finish
[ [ 'test1@example.com' ] ]
data
[ 'test2@example.com' ]
data
[ 'test3@example.com' ]

Я думаю, что событие .on('finish' не произойдет до тех пор, пока, ну, в конце концов, данные не будут обработаны.

Есть ли способ гарантировать, что все результаты будут проанализированы и помещены в массив в конце? Насколько я могу судить, так и должно работать

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