【问题标题】:Wait for two or more files to load with Papa Parse等待两个或更多文件使用 Papa Parse 加载
【发布时间】:2017-12-20 20:58:27
【问题描述】:

我在这里两次使用这个函数来加载 csv 数据: http://papaparse.com/

Papa.parse("http://example.com/file.csv", {
    download: true,
    complete: function(results) {
        console.log(results);
    }
});

当两个文件都准备好后,我想执行另一个取决于两者结果的函数。我正在用标记设计地图。

我想到了 JavaScript Promises。如果你有 2 个 csv 文件/url,有人可以帮我看看会是什么样子吗?

目前我激活了以下库:

Jquery 3.2.1
Papa Parse 4

最后,我知道:How to use Promises with PapaParse? 但我不知道将代码放在哪里可以处理 2 个或更多文件。

【问题讨论】:

    标签: javascript jquery csv papaparse


    【解决方案1】:

    您可以使用以下代码,如果必须在较旧且没有本机承诺或箭头函数的浏览器中运行,您需要使用 babel 和 polyfill。

    如果你有一个 url 数组,你可以这样做:

    urls =  ['path1.csv','path2.csv']
    
    Promise.all(//pass array of promises to Promise.all
      urls//you have an array of urls
      .map(//map urls to promises created with parse
        url=>
          new Promise(//create one promise
            (resolve,reject)=>
              Papa.parse.parse(
                url,
                {
                  download: true,
                  complete:resolve,//resolve the promise when complete
                  error:reject//reject the promise if there is an error
                }
              )
          )
      )
    )
    .then(
      function (results) {
        console.log(results[0]) // log result from file 1
        console.log(results[1]) // log result from file 2
      }
    )
    .catch(//log the error
      err=>console.warn("Something went wrong:",err)
    )
    

    【讨论】:

    • 谢谢!我最终修改了您的代码(我在当前使用的代码中进行了编辑)。您发现我所做的更改有什么缺点吗?
    • @AntonvBR 应该没问题,不过我不知道download:true 应该做什么。
    • 我都不是,但它适用于 Google 表格和本地文件。
    • Papa.parse.parse 在这个块中应该是 Papa.parse。
    • @HMR download:true 表示 url 而不是本地文件。
    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 2018-05-29
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多