尝试使用queue.js将简单的CSV文件加载到D3中

时间:2016-01-06 11:05:55

标签: javascript csv d3.js queue.js

我是web dev的新手,我正在尝试弄清楚如何将CSV数据加载到D3.js中,使用queue.js确保在执行代码的下一步之前数据已完全加载(将绘制带有数据的图表。

我无休止地搜索了这个,但似乎无法围绕queue.js如何工作。

我有以下代码,无法理解为什么它不起作用。

func stdCurry<A,B,C>(f : (A,B) -> C) -> (A) -> (B) -> () -> C {
    return { a in  {
        b in
        return {
            // ...
            f(a,b)
        }
        }
    }
}

我在控制台中收到以下错误:     “未捕获的TypeError:无法读取属性'apply'of undefined”。

我知道函数'makeChart'正在运行,因为我将'一切都运行'作为输出。但由于某种原因,它没有通过我的'mydata'变量。

d3.csv函数中的console.log可以正常工作并输出正确的值。但makeChart函数中的console.log(data)在控制台中显示为“undefined”。

对于这个简单化的问题道歉,但我对此非常陌生,我从谷歌搜索中找到的例子并没有让我解决这个问题。

谢谢,

Ĵ

1 个答案:

答案 0 :(得分:6)

你是这样做的:

queue()
.defer(d3.csv, "Workbook1.csv")
.await(makeChart(mydata));//here you are calling the function makeChart

应该是这样的:

 queue()
    .defer(d3.csv, "Workbook1.csv") 
    .await(makeChart);//only function name is needed

制作图表功能应该是这样的:

function makeChart(error, data) {//first param is error and not data
  console.log(data);
  console.log("everything ran");
 }; 

修改

如果你有多个网址,它将是这样的:

queue()
.defer(d3.csv, "Workbook1.csv")
.defer(d3.csv, "Workbook2.csv")
.await(makeChart);//here you are calling the function makeChart

   function makeChart(error, data1, data2) {//first param is error and not data
      console.log(data1);//workbook1
      console.log(data2);//workbook2
      console.log("everything ran");
     }; 

希望这有帮助!