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

news/2024/5/16 19:07:52

使用 原生的 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");


http://www.mrgr.cn/p/06760262

相关文章

FreeType Glyph Conventions 翻译(7)——FreeType点阵图 Bitmaps

原文地址 https://freetype.org/freetype2/docs/glyphs/glyphs-7.html 目录矢量坐标 和 像素坐标 Vectorial versus pixel coordinatesFT_Bitmap描述符 The FT_Bitmap descriptor将轮廓线转化为点阵图 Converting outlines into bitmaps and pixmaps 这一节的目标是展示FreeTyp…

flask_restful规范返回值

使用方法 导入 flask_restful.marshal_with 装饰器 定义一个字典变量来指定需要返回的标准化字段&#xff0c;以及该字段的数据类型 在请求方法中&#xff0c;返回自定义对象的时候&#xff0c; flask_restful 会自动的读 取对象模型上的所有属性。 组装成一个符合标准化参…

FPGA接口系列——UART

FPGA接口系列——UART 一、UART简介 UART是一种采用异步串行通信方式的通用异步收发传输器。这里我们主要弄明白两个问题:①什么是串行通信,与并行通信有什么区别 ②同步串行通信和异步串行通信有什么区别 ③我们常说的UART和 RS232 以及 RS485 又有什么区别? 串行通信和并…

分析nginx日志统计接口情况

一、背景 近来打算对后端接口进行优化,所以要先对现有接口的情况进行统计。因为相关业务接口是index.php?action=XXX的形式,所以公司运维的管理平台并不能满足需求,所以要自行处理nginx日志获取接口的情况了。 二、处理思路 1.nginx日志中不止包含相关接口的日志,所以先要…

Scikit-Learn逻辑回归(二)

Scikit-Learn逻辑回归二:多项式与正则化 1、多项式回归回顾1.1、为什么使用多项式1.2、多项式回归及原理2、逻辑回归使用多项式2.1、逻辑回归中使用多项式2.2、逻辑回归使用多项式案例(鸢尾花分类)3、逻辑回归使用正则化3.1、正则化回顾3.2、逻辑回归中使用正则化1、多项式回…

单片机学到什么程度才可以去工作?

单片机学到什么程度才可以去工作? 如果没有名校或学位的加持&#xff0c;你还得再努力一把&#xff0c;才能从激烈的竞争中胜出。以下这些技能可以给你加分&#xff0c;你看情况学&#xff0c;不同行业对这些组件会有取舍: . Cortex-M内核:理解MCU内核各部件的工作机制&#…

【Python版】手把手带你如何进行Mock测试

什么是mock&#xff1f; mock测试是以可控的方式模拟真实的对象行为。程序员通常创造模拟对象来测试对象本身该具备的行为&#xff0c;很类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为 为什么要使用Mock&#xff1f; 之所以使用mock测试&#xff0c;是因为真…

zabbix配置https访问

1、启用ssl模块,apache2不用再去安装 mod_ssl模块sudo a2enmod ssl 2、创建存放证书文件的目录并赋予所有权限sudo mkdir /etc/apache2/ssl sudo chmod 777 /etc/apache2/ssl 3、将证书文件上传至刚创建的目录下 4、将 /etc/apache2/sites-available/000-default.conf 和 /…

规范 - 接口文档

作者:Zonezzc 最后更新时间:2024-03-26 19:13:06​​ 原则接口的命名最终一定是便于理解的中文。 接口的说明中一定包含接口原名如 getSellerStandardsProfile,若存在第三方在线接口文档,该原名设置为引向原文的超链接。 所有的参数都要有中文注释。命名规范 对接口理解不透…

34 vue 项目默认暴露出去的 public 文件夹 和 CopyWebpackPlugin

前言 这里说一下 vue.config.js 中的一些 public 文件夹是怎么暴露出去的? 我们常见的 CopyWebpackPlugin 是怎么工作的 ? 这个 也是需要 一点一点积累的, 因为 各种插件 有很多, 不过 我们仅仅需要 明白常见的这些事干什么的即可 当然 以下内容会涉及到一部分vue-cli,…

Fiddler(4)对网站进行过滤

工具模板介绍: 监控模板介绍:

计组

浮点数表示:1.一般尾数用补码,阶码用移码表示2.阶码的位数决定数的表示范围,位数越多范围越大3.尾数的位数决定数的有效精度4.对阶时,小数向大数看齐,小数右移弗林分类SISD 单指令但数据流 单处理器系统SIMD 单指令多数据流 陈列处理机 并行处理机 超级向量处理机MISD 多指…

CH579及AI724UG进行HTTP POST命令的301错误

https://www.5axxw.com/questions/content/7d6gqi

使用U盘重装CentOS7系统

下载CentOS7 系统镜像 制作启动U盘之前&#xff0c;首先要准备一个系统镜像&#xff0c;这里我在CentOS官网直接下载镜像文件&#xff1a; CentOS官网 为了保证下载速度&#xff0c;这里我使用阿里云镜像下载&#xff1a; 阿里云镜像 如上图所示&#xff0c;我需要一个带UI界…

2-13. 创建 ListView 中的 ItemTemplate

上次作业漏了 Row3另外补充一下,如果想要显示 Dark Editor Theme 的话,就需要开启 Editor Extension Authoring然后就能开启 Dark Editor Theme 了创建 ItemRowTemplate 在 Assets / Editor / UI Builder 下面新建 UI Document,起名叫 ItemRowTemplate查看样例项目相关代码 …

二叉树|236.二叉树的最近公共祖先

力扣题目链接 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root q || root p || root NULL) return root;TreeNode* left lowestCommonAncestor(root->left, p, q);TreeNode* right lowestCommonAncesto…

Java——基于CompletableFuture的流水线并行处理

CompletableFuture在JDK1.8提供了一种更加强大的异步编程的api。它实现了Future接口&#xff0c;也就是Future的功能特性CompletableFuture也有&#xff1b;除此之外&#xff0c;它也实现了CompletionStage接口&#xff0c;CompletionStage接口定义了任务编排的方法&#xff0c…

Transformer逐层分解

img { margin: auto; display: block } 什么是Transformer? Transformer架构擅长处理文本数据,这些数据本身是有顺序的。他们将一个文本序列作为输入,并产生另一个文本序列作为输出。例如,讲一个输入的英语句子翻译成西班牙语。Transformer的核心部分,包含一个编码器层和解…

为何ChatGPT日耗电超50万度?

看新闻说&#xff0c;ChatGPT每天的耗电量是50万度&#xff0c;国内每个家庭日均的耗电量不到10度&#xff0c;ChatGPT耗电相当于国内5万个家庭用量。 网上流传&#xff0c;英伟达创始人黄仁勋说&#xff1a;“AI的尽头是光伏和储能”&#xff0c;大佬的眼光就是毒辣&#xff…

2024.03.26

周二之醍醐灌顶,前四周被MySQL高版本耽误时间,没能跟上进度。今天和一位王同学结对,经过他的讲解和演示,我完成了基础阶段。 之前深受csdn毒害,教程新建项目都是选择Empty Activity,但是项目目录中却和我的对不上,今天才得知要选择Empty Views Activity。 代码时间2h,环…