Promise解决异步编程问题

一个典型的异步编程问题:即您尝试在循环中发起多个异步请求,并希望在所有请求都完成后执行某些操作。然而,由于JavaScript的异步性质,numtotal的比较在循环结束时立即执行,而不是在所有请求都完成后执行。这可能导致this.navList在数据完全填充之前就被赋值。

为了优化这段代码,您可以使用Promise.all来等待所有异步请求完成。这里是如何实现的:

  1. 将循环中的异步请求封装成Promise数组:为每个navigatorID创建一个Promise,该Promise在内部调用getAllMemberRecommendList

  2. 使用Promise.all等待所有Promise完成:一旦所有Promise都创建好了,使用Promise.all来等待它们全部解决。

  3. 处理结果:在所有请求都完成后,处理结果并更新this.navList

    getNavList() {  getNavigatorList({  siteID: Common.siteID,  navigatorID: Common.peoNavID,  sortTypeOrder: 1,  isValid: 1,  isLock: 0,  }, (res) => {  if (res.data.header.code === 0) {  const navList = res.data.body.data.rows;  const promises = navList.map(item => {  return new Promise((resolve, reject) => {  getAllMemberRecommendList({  navigatorID: item.navigatorID,  sortTypeTime: 2,  isValid: 1,  isLock: 0,  pageNumber: 99,  }, (res1) => {  if (res1.data.header.code === 0) {  item.memberPublishList = res1.data.body.data.rows;  resolve(item); // 解析当前item  } else {  reject(new Error('Failed to fetch member recommend list for ' + item.navigatorID));  }  });  });  });  Promise.all(promises)  .then(updatedNavList => {  this.navList = updatedNavList;  console.log("导航", this.navList);  })  .catch(error => {  console.error('Error fetching data:', error);  });  }  });  
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【12321骚扰电话举报受理中心-短信验证安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

开发常识:命令行终端、库源码、开发环境阶段

目录 命令行终端 集成开发环境(IDE ):有插件校验等限制,成功率低于操作系统 库源码 github上搜 官网 UNPKG托管开源的包 专业名词 环境 开发:本地机 开发和调试 生产:最终部署 测试:…

交流负载箱的主要功能有哪些?

交流负载箱可以模拟各种实际用电设备的功率、电流、电压等参数,使得电源系统在运行过程中能够承受实际负载的考验,确保电源系统的稳定运行。通过交流负载箱对电源设备进行测试,可以检测出电源设备在过载、短路等异常情况下的保护功能是否正常…

Linux和mysql中的基础知识

cpu读取的指令大部分在内存中(不考虑缓存) 任何程序在运行之前都的加入到内存。 eip->pc指针,指明当前指令在什么位置。 代码大概率是从上往下执行的,基于这样的基本理论。既可以将一部分指令加载到CPU对应的缓存中&#xf…

解决zip文件中文乱码问题

后台微服务运行在linux环境里,前端Vue。在一个项目中,把后台的文件打包成zip,下载到前台。结果发现zip文件名本身乱码,zip文件内压缩的文件也是乱码。所谓乱码,程序员都见过,就是中文变成了乱七八糟的字符。…

【CSAPP】-datalab实验

实验原理与内容 本实验每位学生拿到一个datalab-handout.tar文件。学生可以通过U盘、网盘、虚拟机共享文件等方式将其导入到Unbuntu实验环境中,选择合适位置存放。然后在Ubuntu环境下解压。解压后,根据文件中的叙述和要求更改bits.c文件。本次实验的主要…

【全网最全】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

云计算【第一阶段(26)】Linux网络设置

一、查看网络配置 1.查看网络接口信息ifconfig 查看所有活动的网络接口信息 2.ifconfig命令 查看指定网络接口信息 ifconfig 网络接口 (1)第一行:以太网卡的名字 ens33其中en代表以太网卡, centos6的是eth0, e…

本地maven仓库向远程仓库部署jar包

使用mvn命令即可,如下 mvn deploy:deploy-file \ -DgroupIdtop.rdfa.auth \ -DartifactIdrdfa-auth-spring-mvc-starter \ -Dversion3.0.0-20230718-RELEASE \ -Dpackagingjar \ -Dfile/Users/panmeng/Documents/repository/top/rdfa/auth/rdf…

中国算力网络市场发展分析

中国算力网络市场发展现状 算力涵盖计算、内存、存储等全方位能力,广泛分布于网络边缘、云计算中心、联网设备及转发节点。随着数字化技术革新,算力与网络正深度融合,推动“算网一体化”的演进。这一新型基础设施日渐凸显其重要性&#xff0c…

精准畜牧业:多维传感监测及分析动物采食行为

全球畜牧业呈现出一个动态且复杂的挑战。近几十年来,它根据对动物产品需求的演变进行了适应,动物生产系统需要提高其效率和环境可持续性。在不同的畜牧系统中有效行动取决于科学技术的进步,这允许增加照顾动物健康和福祉的数量。精准畜牧业技…

numpy库(python)

文章目录 1.numpy简介2.安装numpy3.ndarry : numpy库的心脏3.1 创建数组3.2数据类型3.3dtype NumPy是用Python.进行科学计算,尤其是数据分析时,所用到的一个基础库。它是大量Python 数学和科学计算包的基础,比如后面要讲到的pandas)库就用到了…

前端面试题_Css

一、说一下Css的盒子模型? HTML中所有元素都可以看成是一个盒子 盒子的组成:content、padding、border、margin 盒子的类型: 标准盒模型:marginborderpaddingcontent -- box-sizing:content-box(默认&a…

Samtec汽车电子 | 汽车连接器如何在高要求、极端的环境中工作

【摘要/前言】 汽车电子,这些年来始终是极具流量的热门话题,目前不断发展的智能座驾、辅助驾驶等赛道都是对相关产业链需求的进一步刺激,这里蕴含着一片广阔的市场。 同样,广阔的市场里有着极高的准入门槛和事关安全的技术挑战。…

【AI】研发人员的《生存还是毁灭?》

AI在当前技术和社会环境下被视为一种强大的工具和辅助资源,而非一种取代人类开发者的替代品。在本文中,我们将详细探讨AI在多个领域的应用,如何与开发者相互作用,并分析AI对开发者角色的影响和未来的发展趋势。 引言 人工智能&a…

Windows安全认证机制——Windows常见协议

一.LLMNR协议 1.LLMNR简介 链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,使用此协议可以解析局域网中本地链路上的主机名称。它可以很好地支持IPv4和IPv6,是仅次于DNS解析的名称…

代谢组数据分析(十三):评估影响代谢物的重要临床指标

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 相关性分析是通过计算两个变量之间的相关系数来评估它们之间线性关系的强度和方向。最常用的是皮尔逊相关系数(Pearson correlation coefficient),…

security密码明文

引言:在引入未给定初始化mysql数据springboot项目时,由于项目通过security对密码进行了加密,无法进行登录操作,提供的一种解决方法 1、注释掉注入的加密类 // Autowired // private BCryptPasswordEncoder bCryptPassword…

软件测试常见的面试题(46道)

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法&…

VBA通过Range对象实现Excel的数据写入

前言 本节会介绍通过VBA中的Range对象,来实现Excel表格中的单元格写入、区域范围写入,当然也可以写入不同类型的数据,如数值、文本、公式,以及实现公式下拉自动填充的功能。 一、单元格输入数据 1.通过Value方法实现输入不同类型…