1

在我的 Vue.js 应用程序中,我必须解析 CSV 文件并将每一行上传到后端。我想异步执行此操作,以便在上一条记录已上传(承诺已解决)之后读取下一条记录。

import parse from 'csv-parse';

importCsv() {
  const parser = parse()
  
  let index = 0;
  parser.on('readable', async () => {
    let record = parser.read()
    if(record) {
      await new Promise((resolve) => setTimeout(resolve, 1000))
      index++
      console.log("record nr ",index)
    }
  })      
  
  parser.on('error', (err) => {
    console.log(err)
  })

  parser.on('end', () => {
    console.log("finish")
  })

  parser.write(this.fileContent)
  parser.end()
}

this.fileContent是在我的组件中保存为字符串的文件内容。

即使我await在承诺和事件回调之前放置声明asyncreadable它仍然无法正常工作。

实际输出

目前,“finish”这个词首先出现,表示解析结束。然后,1秒后,一次显示9条控制台日志

我希望记录号的输出每 1 秒出现一次,然后在最后控制台日志“完成”。

4

0 回答 0