关于在forEach循环中使用异步,造成forEach里面的函数还未执行完毕,外层的同步已经被执行的问题

使用 原生的 for循环替代forEach循环即可解决问题

1.实例代码:

select_Father_comment_sql_res
    .forEach( (item) => {
      const Select_FId_children_sql = util.format(
        "Select *, \
      IFNULL(User.UserName,'') as CommentUserName, \
      IFNULL(User.UserName,'') as AtUserName\
      From Comment Left Join User ON\
      Comment.CreateUserId=User.UserId  Where FatherCommentId=%s",
        item.CommentId
      );
      const Select_FId_children_sql_res = await query(Select_FId_children_sql);
      console.log("3433333", Select_FId_children_sql_res);
      if (Select_FId_children_sql_res[0]) {
        Select_FId_children_sql_res.forEach((itemZi) => {
          console.log("6666", itemZi);
          CommentZiList.push(itemZi);
        });
      }
    })

    console.log("9999999999999999");
    res.send({
      status: 0,
      CommentList: CommentFuList,
      ZI: CommentZiList,
    });
    console.log("9999999999999999");

2.此处会发现双log打印会早于forEach中循环的 6666等打印,且前端接收到的ZI也是同为空数组,证明res.send还未等forEach完成,就已经被执行。

3.此时,换成for 循环 即可解决问题

 for (let i = 0; i < select_Father_comment_sql_res.length; i++) {
    const Select_FId_children_sql = util.format(
      "Select *, \
    IFNULL(User.UserName,'') as CommentUserName, \
    IFNULL(User.UserName,'') as AtUserName\
    From Comment Left Join User ON\
    Comment.CreateUserId=User.UserId  Where FatherCommentId=%s",
      select_Father_comment_sql_res[i].CommentId
    );
    const Select_FId_children_sql_res = await query(Select_FId_children_sql);
    console.log("3433333", Select_FId_children_sql_res);
    if (Select_FId_children_sql_res[0]) {
      Select_FId_children_sql_res.forEach((itemZi) => {
        console.log("6666", itemZi);
        CommentZiList.push(itemZi);
      });
    }
  }
  console.log("9999999999999999");
  res.send({
    status: 0,
    CommentList: CommentFuList,
    ZI: CommentZiList,
  });
  console.log("9999999999999999");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490089.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【王道训练营】第3题 判断某个年份是不是闰年,如果是闰年,请输出“yes”,否则请输出“no”

文章目录 引言闰年初始代码代码改进改进1&#xff1a;添加提示信息改进2&#xff1a;代码格式改进3&#xff1a;变量命名 其他实现方式使用if-else语句使用函数使用三元操作符 结论 引言 在公历中&#xff0c;闰年的规则如下&#xff1a;如果某个年份能被4整除但不能被100整除…

pycharm使用远程服务器的jupyter环境

1、确保服务器上安装了jupyter,如果没有&#xff0c;执行下面命令安装 pip install jupyter2、启动jupyter notebook服务 jupyter notebook --no-browser --port8888 --ip0.0.0.0 --allow-root表明在服务器的8888 端口上启动 Jupyter Notebook&#xff0c;并允许从任何 IP 地…

qt事件机制学习笔记

实现闹钟功能 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), speecher(new QTextToSpeech(this)) //给语音播报者实例化空间 {ui->setupUi(this); }Widget::~Widget() {delete …

CMake学习笔记(一)一个最简单的CMakeLists嵌套示例

目录 1 mkdir project_macro 2 在project_marco中建立CMakeLists.txt 3 建立专门的src文件夹 4 在src中添加main.cpp和CMakeLists.txt 5 回到project_macro目录&#xff0c;建立build文件夹 6 进入build 文件夹&#xff0c;开始cmake 7 在build文件夹里执行make指令 8 …

Vue.js 安装

1、独立版本 我们可以在 Vue.js 的官网上直接下载 vue.min.js 并用 <script> 标签引入。 2、使用 CDN 方法 以下推荐国外比较稳定的两个 CDN&#xff0c;国内还没发现哪一家比较好&#xff0c;目前还是建议下载到本地。 Staticfile CDN&#xff08;国内&#xff09; :…

uniapp开发H5页面如何打开调试 (vConsole)

前言&#xff1a; H5页面没有微信小程序那样的直接打开调试工具的功能&#xff0c;需要手动安装引用。步骤如下&#xff1a; 一、安装vConsole npm install vconsole 二、引用vConsole 在main.js文件中引入使用 import Vconsole from vconsole let vConsole new Vconsole()…

深度学习的发展历史(深度学习入门、学习指导)

目录 &#x1f3c0;前言 ⚽历史 第一代神经网络&#xff08;1958-1969&#xff09; 第二代神经网络&#xff08;1986-1998&#xff09; 统计学习方法的春天&#xff08;1986-2006&#xff09; 第三代神经网络——DL&#xff08;2006-至今&#xff09; &#x1f3d0;总结…

【MySQL】数据库--库操作

目录 一、创建数据库 二、打开数据库 三、修改数据库 四、显示数据库 五、删除数据库 六、备份与恢复数据库 1.备份&#xff1a; 2.恢复&#xff1a; 一、创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] …] [DEF…

原生数据开发软件 TablePlus for mac

一款非常好用的本地原生数据开发软件&#xff1a;TablePlus激活版。 软件下载&#xff1a;TablePlus for mac v3.11.0激活版 这款优秀的数据库编辑工具支持 MySQL、SQL Server、PostgreSQL 等多种数据库&#xff0c;具备备份、恢复、云同步等功能。它可以帮助您轻松编辑数据库中…

案例分享 | ESP32-C3+智能车库门应用方案 小尺寸低功耗

以前的车库门Opener只能通过墙壁开关或者遥控器来控制开启或关闭&#xff0c;超过一定距离的话无法通过遥控器来操控车库门&#xff0c;也无法随时查看车库门的状态&#xff0c;而启明云端智能车库门方案&#xff0c;可以通过手机APP远程控制车库门&#xff0c;实现远程开关门、…

Cadence——导出BOM清单

首先使用Allegro PCB Designer打开xxx .brd PCB制板文件 如下图&#xff0c;然后点击Tools–>Quick Reports&#xff0c;再选择Bill of Material Report或者Bill of Material Report(Condensed)&#xff0c;这两个的区别就是上面的导出的BOM物料清单中相同的器件是不会合并的…

基于“云”重构“百度云盘”

这一篇文章是和上一篇连着的哟&#xff01; # docker run -p 80:80 -d -v /data/owncloud/:/var/www/html owncloud 一、【安装完成】 二、【打开浏览器】 三、【回到这个熟悉的界面&#xff0c;掉。】 四、【上传文件】 试了可以看哇偶&#xff01;&#xff01;&#xff01…

四年创作,心路历程

四年创作&#xff0c;心路历程 前言初识收获日常憧憬 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 前言 今天打开csdn&#xff0c;发现官方发送了一条私信,原来我已经在计算机这…

分享 | 使用Virtuoso VCPVSR工具基于标准单元的布局布线流程

​ 本节内容 导览 一、准备工作 二、运行VCP前的配置 三、VCP的布局规划 四、VCP的自动摆放 五、VSR的自动绕线 分享使用Virtuoso GXL Custom Digital Placer(VCP) & Space-based Router(VSR)工具进行基于纯数字Standard-Cell布局布线的操作流程。 VCP&VSR演…

TCP(socket 套接字)编程 1

一、TCP套接字编程架构如下 二、相关代码实现 1、服务器端代码 package com.company;import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket;public class Main {public static void main(String[] args) {…

A Novel Negative Sample Generating Method for KnowledgeGraph Embedding

摘要 为了有效地提取知识图中的关系和原因&#xff0c;将实体和关系编码到一个连续的低维语义空间中。在负样本生成阶段&#xff0c;大多数知识图嵌入方法更注重替换头或尾实体以提高训练效率&#xff0c;很少替换关系。这些负样本生成方法对关系预测的贡献不大。本文提出了一…

《深入理解计算机系统》学习(4):过程(如函数)和栈存储

目录 过程1 运行时栈2 转移控制3 数据传送4 栈上局部存储 过程 过程中是软件中一种很重要的抽象&#xff0c;提供了一种封装代码的方式&#xff0c;用一组指定的参数和一个可选的返回值实现了某种功能。然后&#xff0c;可以在程序的不同的地方使用这个功能。设计良好的软件用…

FLUOR DE LYS® HDAC fluorometric activity assay kit组蛋白去乙酰化酶荧光活性检测试剂盒

FLUOR DE LYS HDAC fluorometric activity assay kit组蛋白去乙酰化酶荧光活性检测试剂盒 目前&#xff0c;组蛋白去乙酰化酶抑制剂已经显示出其作为抗肿瘤药物的前景&#xff0c;这也自然激发了研究者们对于筛选HDAC&#xff08;Histone deacetylase&#xff0c;组蛋白去乙酰化…

【AI】使用Azure OpenAI创建自己的AI应用!

【AI】使用Azure OpenAI创建自己的AI应用! 目录 【AI】使用Azure OpenAI创建自己的AI应用!创建工作区模型介绍部署模型API参数计算Token使用Python SDK调用补全模型调用对话模型流式调用异步调用提示技巧生成对话分类推荐超级课程: Docker快速入门到精通Kubernetes入门到大师…

超越Sora!StreamingT2V AI视频模型,轻松打造120秒视觉盛宴

近日&#xff0c;来自美国德克萨斯大学奥斯汀分校&#xff08;UT奥斯丁&#xff09;等机构的研究人员提出了一项名为StreamingT2V的AI视频生成技术&#xff0c;引起了业界的广泛关注。这项技术打破了传统视频生成的局限&#xff0c;实现了高度一致且长度可扩展的视频生成&#…