我试图从一开始就将CSV file
加载到应用程序中,并将值保留在变量中,然后从其他函数中调用它,而不是一直then
进行访问
我的代码是
var DVizModule = (() => {
let dataset = [];
let _data = async () => {
const data = await d3.csv("data/alphabet.csv");
return data;
}
let data = _data().then(data => {
dataset = data;
return dataset;
})
return {
data: data
}
})();
console.log(DVizModule.data);
它返回
Promise pending proto: Promise
PromiseStatus: "resolved"
PromiseValue: Array(26)
我写的时候
const t = async function() {
const data = await d3.csv("data/alphabet.csv");
return data;
}
t().then(result => console.log(result))
它完美地返回文件 我正在尝试通过
访问文件内容DVizModule.data
答案 0 :(得分:0)
如果要同步访问data
,则应将其声明为纯值,而不是诺言。这样的事情应该可以解决问题:
const DVizModule = {};
d3.csv("data/alphabet.csv").then(data => DVizModule.data = data);
当然请注意,DVizModule.data
将是undefined
,直到请求实际完成为止。如果要确保实际存在值,则必须将外部上下文包装到async
函数中,并在开始时等待数据。这样,您既可以确保在代码访问值时又存在该值并以同步方式使用它。
希望我能正确回答您的问题,而不是试图解决错误的问题;)