【问题标题】:JavaScript passing the result from a function onto another (with promises)JavaScript 将一个函数的结果传递给另一个函数(有承诺)
【发布时间】: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


    【解决方案1】:

    像这样更改 fetchData 函数中的返回位置。

    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;
    })
       }
    

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 2012-04-18
      • 2019-07-25
      相关资源
      最近更新 更多