Papa Parse:将.csv中的数组复制到我的代码

时间:2016-03-09 16:18:43

标签: javascript parsing

我使用papa parse读取一个大的.csv并将其内容复制到我的代码中的数组中。如果我执行下面的代码,控制台首先显示第二个日志,作为空数组。我会期望通过调用函数parseMe来填充.csv的内容,然后再次记录它?

function parseMe(url, callBack){
    Papa.parse(url, {
        complete: function(results) {
        callBack(results.data[0]);
        }
    });
}

function doStuff(data){
    newArray=data;
    console.log(newArray); //log no. 1
}

var newArray=[];
parseMe(document.getElementById("file").files[0], doStuff);
console.log(newArray); //log no. 2

1 个答案:

答案 0 :(得分:1)

“log no.2”显示空结果数组的原因是当该行代码运行时尚未解析该数组。如果您在日志输出中添加一些标识文本,您将看到如下内容:

(Log no.2) After parse call but before complete fired, newArray: []

(Log no.1) In OnComplete callback, Array is: [ populated_array ]

即,执行顺序如下:

  1. Papa parse开始解析输入文件
  2. 记录号。 2个输出,显示空结果数组
  3. Papa parse完成解析输入文件
  4. on on complete calls
  5. 记录号。 1个输出,显示填充的结果数组
  6. 工作笔:http://codepen.io/sensei/pen/mPPKBP/

    这里的关键概念是异步执行;我建议您阅读JavaScript承诺(blogpostMDN reference),以获得一个现代化的API,帮助您了解此关键计算概念的Web应用程序实现。