我是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”。
对于这个简单化的问题道歉,但我对此非常陌生,我从谷歌搜索中找到的例子并没有让我解决这个问题。
谢谢,
Ĵ
答案 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");
};
希望这有帮助!