【发布时间】:2022-12-04 04:36:39
【问题描述】:
大家好,周六快乐!
尽管JavaScript不是我的主要语言,我已经学习了很多关于异步函数的知识,我认为我已经理解了整个事情。好吧,显然不是!
我有这个格式文件当前在我的 GitHub 存储库中的文件。我们称它为“csv_文件”.它的内容是这样的:
Ind,Sentence
0,Hello world!
1,How are you?
2,Yeah all good thx
etc..
我在用着d3的内置.csv()方法来获取文件,一切正常。我有这个第一个功能:
const fetchData = (data) => {
let fetched = [];
d3.csv(data).then(csv_file => {
for (let c in csv_file) {
fetched.push(csv_file[c]["Sentence"]);
}
})
return fetched;
}
然后是第二个功能:
const parseData = async (data) => {
let parsed = await fetchData(data);
console.log(parsed)
}
当我运行parseData(csv_file)时,我在控制台中看到了数组,一切正常。但是,在我的 IDE 中,我收到这条消息,告诉我 await 关键字在那里没有用。
问题是,如果我将 parseData() 函数更改为:
const parseData = async (data) => {
let parsed = await fetchData(data);
for (let p of parsed) {
console.log(p)
}
}
... Norhing 显示在控制台中! :O 所以基本上,console.log(parsed) 显示了数组,但遍历它什么也没显示。我怀疑我还没有完全掌握如何从 async / await 函数返回数据。
我在这里做错了什么?我知道我可以在第一个函数中执行此循环,但我想了解并了解如何将第一个函数(parsed 数组)的结果传递到第二个函数,然后它们循环遍历它。
我在发帖前检查了一些解决方案,比如this one,但我仍在苦苦挣扎。
谢谢你的帮助!
【问题讨论】:
标签: javascript node.js asynchronous d3.js async-await