在完成'之外无法达到Papa Parse的结果。功能

时间:2017-08-13 13:28:53

标签: javascript angular typescript asynchronous papaparse

我目前正在使用带有Angular 2的Papa Parse将csv列表加载到列表中,我希望能够将该列表传递给另一个组件。我能够读取csv数据并使用控制台日志打印它们,但我无法解决“完成”之外的解析数据的结果。功能。我知道这是因为解析文件是一个异步过程,我必须使用回调函数。我尝试使用回调函数修复此问题,但我仍然无法使用“完成”之外的数据。功能来自Papa Parse本身。

这是我尝试过的一个例子,但是这里的listOfLoads在convertloads方法中是未定义的,而不是在任何其他正常的同步方法中。

export class AppComponent {


 listOfLoads: Load[] = [];

  constructor(){
  }

  importFile(fileInput: any, callBack) {
    let listOfLoads: Load[] = [];
    let file = fileInput.target.files[0];


    let result = Papa.parse(fileInput.target.files[0], {
      complete: function (results) {
        callBack(results.data);
      },
      header: true,
      delimiter: ";"
    });
  }

  convertLoads(data) {
    this.listOfLoads = deserialize<Load[]>(Load, data);
  }

}

有没有办法将数据放入列表并在其他组件中使用?我到处寻找解决方案。

1 个答案:

答案 0 :(得分:1)

您可以将组件功能提供给Papaparse。 一旦Papaparse加载数据,它将触发您的功能。 或者您可以创建一个observable,当数据加载完成后,您可以在订阅块中执行任何操作。

我为你创造了一个工作的plunkr。你可以看看这个。

https://plnkr.co/edit/WFVYEQnH35DeTsNBS456