首页 > 解决方案 > 为什么我的 D3.csv() 方法返回“未定义”

问题描述

我只有一个 csv 文件,我正在尝试使用异步函数获取数据,但我没有定义。

<script>
    async function data(pathToCsv) {
        return await d3.csv(pathToCsv, function (data) {
            data.year = +data.year
            data.running_total = +data.running_total
            data.date = new Date(data.year, 0)
            return data
        })
    };
    let dataset = data('q3.csv');
    console.log(dataset.year);
</script>

标签: javascriptd3.js

解决方案


这里的问题是您的数据函数正在返回一个promise,因此year从promise 对象访问将返回undefined,您需要await在调用时添加data function

 async function data(pathToCsv) {
        return await d3.csv(pathToCsv, function (data) {
            data.year = +data.year
            data.running_total = +data.running_total
            data.date = new Date(data.year, 0)
            return data
        })
   };

  async function init() {
     let dataset = await data('q3.csv');
     // this should work now assuming you are using d3 function correctly as i'm not aware of d3 functions myself
     console.log(dataset.year); 
  }

  init()

推荐阅读