在一些结果后如何停止 papaparse 流

Lal*_*iya 5 javascript node.js papaparse

我正在使用PapaPase解析大 CSV 文件,使用块模式。

我正在验证 csv 数据,我想在验证失败时停止流式传输。

但是经过一些解析后,我无法停止流式传输。

我试图停止使用块回调中的 return false ,但它不起作用。

下面是代码。

$("#fileselect").on("change", function(e){
    if (this.files.length) {
        var file = this.files[0]
        count = 0;
        Papa.parse(file, {
            worker: true,
            delimiter: "~~",
            skipEmptyLines:true,
            chunk: function (result) {
                count += result.data.length;
                console.clear();
                console.log(count);
                if (count>60000) {
                    return false;
                }
            },
            complete: function (result, file) {
                console.log(result)
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

Jon*_*rey 6

Chunk 和 Step 都可以访问解析器,您可以使用它来暂停、恢复或(如您所愿)中止。

step: function(results, parser) {
console.log("Row data:", results.data);
console.log("Row errors:", results.errors);
}’
Run Code Online (Sandbox Code Playgroud)

因此,在您的实例中,您需要执行此操作(未经测试):

$("#fileselect").on("change", function(e){
    if (this.files.length) {
        var file = this.files[0]
        count = 0;
        Papa.parse(file, {
            worker: true,
            delimiter: "~~",
            skipEmptyLines:true,
            chunk: function (result, parser) {
                count += result.data.length;
                console.clear();
                console.log(count);
                if (count>60000) {
                    //return false;
                    parser.abort(); // <-- stop streaming
                }
            },
            complete: function (result, file) {
                console.log(result)
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

查看 step 和 chunk 的文档。

https://www.papaparse.com/docs

希望这有帮助!