使用 papa parse 从远程 csv 文件中获取 header

Get just header from remote csv file using papa parse

我只需要从远程 csv 文件中提取 header。

我目前的方法如下:

Papa parse 有一种方法可以流式传输数据并单独查看每一行,这很棒,我可以使用 parser.abort() 终止流以防止它在第一行之后继续前进,这看起来如下:

Papa.parse(csv_file_and_path,{header:true, worker:true, 
    download: true,
    step: function(row, parser) 
    {
        //DO MY STUFF HERE
        parser.abort();
    }
});

这工作正常,但因为我使用的是远程文件,它必须下载数据才能读取它。即使代码在解析第一行后将控制权交还给浏览器,但在解析找到第一行并为我提供所需信息后,下载会继续很长时间,特别是对于下载可以持续很长时间的大文件在我得到我需要的东西后的时间。

有没有更有效的方法?我可以阻止 papa parse 下载整个文件吗?

我试过使用

Papa.parse(csv_file,{header:true,
download: true,
preview:1,
complete: function(results){
    //DO MY STUFF HERE
}
});

但这做同样的事情,它下载整个文件,但与第一种方法一样,在解析第一行后将控制权交还给浏览器。

您可以使用 PapaParse 的预览选项:

 Papa.parse(..., {
          preview: 5, ...

另请阅读:https://github.com/mholt/PapaParse/issues/47

相关主题:Javascript using File.Reader() to read line by line

我想出的解决方案与我原来的问题非常相似,不同之处在于我中止、完成和清除内存。

使用下面的方法,只下载文件的一个块,大大减少了大文件的带宽开销,因为在解析第一行后没有继续下载。

Papa.parse(csv_file,{header:true,
    download: true,
    step: function(results, parser) {

        //DO MY THING HERE

        parser.abort(); 
        results=null;   //Attempting to clear the results from memory
        delete results; //Attempting to clear the results from memory

    }, complete: function(results){

        results=null;   //Attempting to clear the results from memory
        delete results; //Attempting to clear the results from memory

    }
});