Javascript 为什么我的D3.csv()方法正在返回;“未定义”;
我只有一个csv文件,我试图用一个异步函数获取数据,但是我没有定义Javascript 为什么我的D3.csv()方法正在返回;“未定义”;,javascript,d3.js,Javascript,D3.js,我只有一个csv文件,我试图用一个异步函数获取数据,但是我没有定义 <script> async function data(pathToCsv) { return await d3.csv(pathToCsv, function (data) { data.year = +data.year data.running_total = +data.running_total data.da
<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>
异步函数数据(pathToCsv){
return wait d3.csv(路径、函数(数据){
data.year=+data.year
data.running_total=+data.running_total
data.date=新日期(data.year,0)
返回数据
})
};
让数据集=数据('q3.csv');
console.log(dataset.year);
这里的问题是,您的数据函数正在返回承诺,因此从承诺对象访问year
将返回未定义的
,您需要在调用数据函数时添加等待
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()
我解决了
<script>
async function data(pathToCsv) {
let dataset = await d3.csv(pathToCsv, function (d) {
d.year = +d.year
d.running_total = +d.running_total
d.date = new Date(d.year, 0)
return d
})
return dataset
};
data('q3.csv').then(function(d) {
d.forEach(function(p){
console.log(p.date.getFullYear());
})
});
</script>
异步函数数据(pathToCsv){
让dataset=wait d3.csv(pathToCsv,函数(d){
d、 年份=+d.year
d、 运行总数=+d.运行总数
d、 日期=新日期(d.年,0)
返回d
})
返回数据集
};
数据('q3.csv')。然后(函数(d){
d、 forEach(函数(p){
log(p.date.getFullYear());
})
});
看看这篇未定义的文章still@RaminMelikov然后,csv确实返回解析为未定义的承诺,或者您正在访问的数据不正确,总之,在快速搜索之后,我觉得csv函数确实返回了一个数组,因此您可能希望尝试dataset[0]。year。这两种情况都使用console.log(dataset)进行sart,并查看发生了什么。如果您使用codesandbox或类似的方法设置一个可复制的示例,我可以为您提供更多帮助