Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 当我需要将async/await嵌入javascript中的forEach()时,如何使用它_Json_Promise_Async Await_Sequelize.js - Fatal编程技术网

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

Json 当我需要将async/await嵌入javascript中的forEach()时,如何使用它,json,promise,async-await,sequelize.js,Json,Promise,Async Await,Sequelize.js,我知道这不会像我写的那样起作用,我看不到任何解决问题的答案。代码太长,无法放在这里,但我已经包含了一个指向要点的链接 我的问题是: 我得到一个json文件的ID列表,这些文件必须在多个SQL表中读取并转换为行。该列表来自另一个json文件,以ID数组的形式指向我需要读取和转换的文件 根据要求,SQL表中不能有包含冗余数据的行。SQL的ID是自动生成的。API中有3类实体: 学习者——参加课程的学生 课程——为学习者提供的培训机会(他们有孩子代表细节) 结果——学习者在特定日期学习课程的交叉点(

我知道这不会像我写的那样起作用,我看不到任何解决问题的答案。代码太长,无法放在这里,但我已经包含了一个指向要点的链接

我的问题是:

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

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

  • 学习者——参加课程的学生
  • 课程——为学习者提供的培训机会(他们有孩子代表细节)
  • 结果——学习者在特定日期学习课程的交叉点(他们有孩子代表细节)
  • 学习者和课程在结果中可能出现多次,但在特定日期仅出现一次。但是,学习者和课程只能分别在学习者和课程表中出现一次(无冗余)

    我的源数据是4个json结果,与我列表中的4个ID匹配。高级视图如下(格式:Course\u TimeStamp.json)

    • id=5sM5YLnnNMN_1525523468000.json(学习者=daffy@duck.com)
    • id=5sM5YLnnNMN_1527517868000.json(学习者=yogi@bear.com)
    • id=6tn6zmoono_1530730049000.json(学习者=daffy@duck.com)
    • id=6tn6zmoono_1541011649000.json(学习者=foghorn@leghorn.com)
    当我解析和写入我得到的数据时:

    • 3个学员行(如预期)
    • 3个课程行(1个是多余的,不允许)
    • 4个结果行(如预期)
    • 课程和成果的孩子们都按照预期编写
    考虑到我的约束条件,我如何解决这个问题?我怀疑冗余问题可能会在一些模糊的情况下出现在学习者表中,尽管目前尚未出现。我对所有表使用相同的方法


    谢谢你的帮助。很抱歉这么冗长。

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

    原因:因为我们不能在同步函数中使用wait。正如您所看到的,“processArray”是一个异步函数。但是匿名的 我们用于forEach的函数是同步的

    您可以使用简单for循环,如下所示

    for(question of questions) {
        await processCourseDetails(jsonData, question);
    }
    
    您可以创建一个自定义函数,使其与forEach一样使用async/await ,


    问题描述没有提到async或await,因此不清楚标题与问题的关系。我在代码中使用async/await,如果你看要点,你会看到的。请在问题中发布一段代码。不要依赖于外部主机。这个要点超过250行。你必须至少解释一下要点的哪一部分与标题相关,并指出给你带来麻烦的行号。谢谢。我读过很多文章,但没有这篇。我已经把它做成书签,明天早上我会深入研究它。希望这样做。@doug5solas,好的,当然:)或者,您可以收集所有承诺,然后
    Promise.all
    。这让承诺并行运行<代码>等待承诺。全部(问题。地图(q=>ProcessCoursedDetails(jsonData,q))@Vivek Doshi:非常感谢。我已经为此绞尽脑汁了一段时间。我阅读了这篇文章,并根据我的情况调整了示例,效果非常好。我所有的结果都如预期。我是一个感恩的新手。
    for(question of questions) {
        await processCourseDetails(jsonData, question);
    }