如何阻止我的代码在papaparse完成之前继续进行?

问题描述

我需要先完成papaparse,然后才能将其移至列表中循环的那一部分(需要填充papaparse)。

在我的代码中,papaparse在循环之后完成了列表的填充,因此我的循环最终在一个空列表上循环。这是我的代码

const csvData=[];
papa.parse(file,{
  header: true,step: function(result) {
    csvData.push(result.data)
  },complete: function(results,file) {
    //console.log('Complete',csvData.length,'records.'); 
    console.log(csvData);
  }
});

//loop through the list
for (var i = 0; i < csvData.length; i++){
    var jsonObj = csvData[i];
    console.log(jsonObj);
    let aimObj = jsonToaim(jsonObj);
    console.log(aimObj);
}

我该怎么做?我是js新手。非常感谢!

解决方法

您可以将parse调用包装在一个承诺中,然后等待该承诺:

async function processCsv (file) {
  const csvData = await new Promise((resolve) => {
    const data = [];
    papa.parse(file,{
      header: true,step: function (result) {
        data.push(result.data);
      },complete: function (results,file) {
        resolve(data);
      }
    });
  });
  
  for (let i = 0; i < csvData.length; i++) {
    // ...
  }
}