javascript - 无法在 'complete' 函数之外获得 Papa Parse 结果

标签 javascript angular typescript asynchronous papaparse

我目前正在使用 Papa Parse 和 Angular 2 将 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);
  }

}

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

最佳答案

您可以将组件函数交给Papaparse。 一旦 Papaparse 加载数据,它将触发您的函数。 或者您可以创建一个可观察的对象,当数据加载完成时,您可以在订阅 block 中执行任何操作。

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

https://plnkr.co/edit/WFVYEQnH35DeTsNBS456

关于javascript - 无法在 'complete' 函数之外获得 Papa Parse 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45660868/

相关文章:

javascript - 每当我尝试从中调用方法时,服务都是未定义的

Angular 安装 ng-bootstrap : Cannot find module '@schematics/angular/utility/project'

Angular 4 : Dynamic template with interpolation

javascript - 在 Angular 中编辑 JSON 搜索结果

Angular2/4 搜索建议

javascript - 代码警报 'object Object'

typescript - Angular2 在收到数据后应用 Pipe

javascript - 如何在 bootstrap ngb-tabset 的 Angular 6 中以编程方式加载选项卡

javascript - d3.join() 输入调用而不是更新?

javascript - 如何根据对象的属性加载动态组件?