json - 当我需要将 async/await 嵌入到 javascript 中的 forEach() 中时如何使用它

标签 json promise async-await sequelize.js

我知道这不会像我写的那样工作,而且我没有看到任何可以为我解决问题的答案。代码太长,无法放在这里,但我已经包含了一个要点的链接

https://gist.github.com/dhawkinson/41211d067ea91e0b7a5823067d2e39fe

我的问题是这样的:

我得到 json 文件的 id 列表,必须读取这些文件并将其转换为多个 SQL 表中的行。该列表来自另一个 json 文件,以 id 数组的形式指向我需要读取和转换的文件。

根据要求,SQL 表中不能有冗余数据的行。 SQL 的 id 是自动生成的。 API 中有 3 类实体:

  • 学习者 -- 参加类(class)的学生
  • 类(class) -- 为学习者提供的培训机会(他们有 child 代表细节)
  • 结果——学习者在特定日期参加类(class)的交集(他们有 child 代表细节)

  • 学习者和类(class)都可能在结果中出现多次,但在特定日期只出现一次。但是,学习者和类(class)在学习者和类(class)表中只能分别出现一次(无冗余)。

    我的源数据是 4 个 json 结果,与我列表中的 4 个 ID 匹配。高级 View 如下(格式:Course_TimeStamp.json)
  • id = 5sM5YLnnNMN_1525523468000.json(学习者 = daffy@duck.com)
  • id = 5sM5YLnnNMN_1527517868000.json (学习者 = yogi@bear.com)
  • id = 6tN6ZMooONO_1530730049000.json(学习者 = daffy@duck.com)
  • id = 6tN6ZMooONO_1541011649000.json(学习者=foghorn@leghorn.com)

  • 当我解析和写入数据时,我得到:
  • 3 学习者行(如预期)
  • 3 类(class)行(1 是多余的,不允许)
  • 4 结果行(如预期)
  • 类(class)和成果的子项都按预期编写。

  • 鉴于我的限制,我该如何解决这个问题?我怀疑冗余问题可能会在某些模糊的情况下出现在 Learners 表中,尽管目前还没有。我对所有表都使用相同的方法。

    帮助表示赞赏。对不起,冗长。

    最佳答案

    您不能将 async/await 与 forEach 一起使用

    REASON : Because we can not use await inside synchronous function. As you can see “processArray” is async function. But anonymous function that we use for forEach is synchronous. DO READ


    questions.forEach((question) => {
        processCourseDetails(jsonData, question);
    });
    

    您可以使用简单的 for 循环 ,像这样
    for(question of questions) {
        await processCourseDetails(jsonData, question);
    }
    

    You can create a custom function to work like forEach with async/await , DO READ

    关于json - 当我需要将 async/await 嵌入到 javascript 中的 forEach() 中时如何使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643034/

    相关文章:

    java - Jackson JSON 序列化映射

    c# - Json.net 在 Web API 中使用,但在 Razor 模板中调用 Json.Encode 时不使用

    c# - Json字符串转C#对象

    javascript - 从 dynamodb 检索文档的异步代码永远不会执行

    javascript - 拼接 JSON 列表中的元素 - javascript

    Angular 在继续之前等待 promise 解决

    javascript - 如何捕获服务器响应,即使发生 400 错误请求错误?

    javascript - Typescript:类型 'Promise<{}>' 无法分配给类型

    c# - 等待延迟破坏打字机效果 c#?

    c# - 为什么任务不显示已取消状态