papaparse对于数据库角度来说太快了5

时间:2018-04-10 17:21:37

标签: database angular asynchronous angular5 papaparse

我正在使用papaparse读取csv文件来获取记录,但问题是它对于数据库而言太快了。它会立即读取csv文件,但单个记录仍在数据库API中处理,因此只有一些记录在数据库中以随机顺序异步处理,并且所有记录都不会因此而进入数据库。我的代码是

onSubmit() {
this.papa.parse(this.csvFile, {
  step: (row) => {
    var jsonObj = this.arrayToJSON(row.data[0]);
    console.log(jsonObj);
    this.apiService.addEmployees(jsonObj).
      subscribe(
        add => this.arrayToJSON(jsonObj),
        error => console.log("Error :: " + error))
  }
});}

我希望papaparse等待db请求处理的所有内容,然后获取下一条记录。

1 个答案:

答案 0 :(得分:0)

您可以使用Observable.concat

onSubmit() {
  // First of all, prepare an array of observables
  const databaseWrites = [];

  this.papa.parse(this.csvFile, {
    step: (row) => {
      let jsonObj = this.arrayToJSON(row.data[0]);
      console.log(jsonObj);
      databaseWrites.push(this.apiService.addEmployees(jsonObj));
    }
  });

  // Once everything is prepared, use concat to do each operation one after another
  Observable.concat(...databaseWrites).subscribe(() => { console.log('write success !')});
}

因为Observable很冷,你可以准备你的请求并订阅concat,以便让每个操作一个接一个地执行。