代码之家  ›  专栏  ›  技术社区  ›  Steven Matthews

当CSV解析时,Busboy未按预期顺序触发事件

  •  0
  • Steven Matthews  · 技术社区  · 5 年前

    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' 在数据完成之前,事件不会发生。

    有没有办法确保我已经解析了所有的结果,并将其放在一个数组的末尾?据我所知,这就是它的工作方式

    0 回复  |  直到 5 年前