我正在尝试将return
内的object
callback function
在以下情况下,console.log()
会按预期显示结果
var dVizModule = (function(){
let dataset;
function loadData(fileName) {
dataset = d3.csv(fileName, (data) => {
dataset = data;
console.log(dataset);
});
};
return {
loadData: loadData
}
})();
dVizModule.loadData("data/time_scale_data.csv")
但是当我尝试在return
中使用callback function
时,故事就不同了,它返回了undefined
var dVizModule = (function(){
let dataset;
function loadData(fileName) {
dataset = d3.csv(fileName, (data) => {
dataset = data;
return dataset;
});
// return dataset; or even here!
};
return {
loadData: loadData
}
})();
console.log(dVizModule.loadData("data/time_scale_data.csv"))
答案 0 :(得分:0)
由于它是基于回调的工作流程,因此上面的代码将无法工作。 d3.csv是一个异步函数,您只能通过传递给它的回调获取结果,因此即使loadData也需要遵循相同的模式。您只需编写类似的内容即可。
var dVizModule = (function(){
function loadData(fileName,callback) {
d3.csv(fileName, (data) => {
callback(data);
});
};
return {
loadData: loadData
}
})();
dVizModule.loadData("data/time_scale_data.csv",(data)=>{
console.log(data);
})