[前端异步]循环中所有异步任务完成才往下运行?

ops/2024/10/18 2:36:15/
reqData(){this.startLoading();//获取分析结果数据for (let i = 1; i <=24;i += 1) {try {let formattedValue = i.toString().padStart(4, '0');this.requestData(formattedValue).then((PromiseResult) => {if(PromiseResult.status==="success"){this.images.push(PromiseResult.image)this.positions.push(PromiseResult.position)}}).catch((error) => {// 处理错误console.error(error);});} catch (error) {console.error(`Error fetching data for value ${formattedValue}:`, error);}}console.log("数据请求成功");this.endLoading();},

需求:要等for循环中的异步任务所有完成才向下运行

使用 async/await 来等待所有异步任务完成后再执行后续代码

怎样使用嘞?配合Promise

async reqData() {this.startLoading();try {// 使用 Promise.all 来等待所有异步任务完成await Promise.all(Array.from({ length: 24 }, (_, i) => {let formattedValue = (i + 1).toString().padStart(4, '0');return this.requestData(formattedValue).then((PromiseResult) => {if (PromiseResult.status === "success") {this.images.push(PromiseResult.image);this.positions.push(PromiseResult.position);}}).catch((error) => {console.error(`Error fetching data for value ${formattedValue}:`, error);});}));console.log("数据请求成功");} catch (error) {console.error("Error fetching data:", error);}this.endLoading();
}

在此修改后的代码中,使用了 Promise.all 方法来等待所有的异步任务完成。它接受一个 Promise 数组作为参数,并返回一个新的 Promise,该 Promise 在所有输入的 Promise 都已解析或有一个被拒绝时解析。这样就能够确保所有异步任务都完成后再执行后续的代码逻辑。


http://www.ppmy.cn/ops/38006.html

相关文章

idea 项目 修改项目文件名 教程

文章目录 目录 文章目录 修改流程 小结 概要流程技术细节小结 概要 原项目名 修改流程 关掉当前项目的idea页面 修改之后的文件名 重新打开idea。选择项目打开项目页面 技术细节 出现下面这个问题&#xff0c;可以参考作者新的一编文章idea开发工具 项目使用Spring框架开发解…

js如何把json列表转成数组

在JavaScript中&#xff0c;JSON列表&#xff08;通常指的是JSON数组&#xff09;可以被直接解析成JavaScript数组。这是通过使用JSON.parse()方法实现的。 假设你有一个JSON列表的字符串&#xff0c;如下所示&#xff1a; [{"name": "Alice", "age…

Oracle 19c 单实例adg 一主一备搭建

Oracle 19c 单实例adg 一主一备搭建 首次搭建oracle adg&#xff0c;整理了搭建主备的步骤及遇到的问题 主库配置 开启主库监听 lsnrctl start开启归档模式 --先查看当前的归档模式 archive log list; --当 database log mode显示为no archive mode即为已经需要开启归档&a…

多态的用法

场景&#xff1a; 目前的一个功能F在一个平台a配置下是Fa()。 void C(Config c){ PreF(); if(c is a){ Fa(); } PostF(); } 现在要添加对另一个平台b的配置。 现在最直接的办法是修改F的调用代码C。 void C(Config a){ PreF(); if(c is a) { Fa(); } else if(c is b) { …

Springboot整合飞书向群组/指定个人发送消息/飞书登录

Springboot整合飞书向群组发送消息 飞书开放平台创建企业自建应用 添加应用能力-机器人 创建完成后&#xff0c;进入应用详情页&#xff0c;可以在首页看到 App Id 和 App Secret 在飞书pc端创建一群机器人 此处可以拿到该机器人的webhook地址,通过https的方式,也可以调用发送…

学成在线 - 第3章任务补偿机制实现 + 分块文件清理

7.9 额外实现 7.9.1 任务补偿机制 问题&#xff1a;如果有线程抢占了某个视频的处理任务&#xff0c;如果线程处理过程中挂掉了&#xff0c;该视频的状态将会一直是处理中&#xff0c;其它线程将无法处理&#xff0c;这个问题需要用补偿机制。 单独启动一个任务找到待处理任…

[C++]哈希应用-布隆过滤器快速入门

布隆过滤器 布隆过滤器&#xff08;Bloom Filter&#xff09;是一个由布隆在1970年提出的概率型数据结构&#xff0c;它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器的主要特点是高效的插入和查询&#xff0c;可以用于检索一个元素是否在一个集合中。 原理…

射频无源器件之耦合器

一. 耦合器的作用 在射频电路中,射频耦合器将一路微波功率按比例分成几路,用于检测或监测信号,如功率测量和波检测,还可改变信号的幅度、相位等特性,以满足不同的通信需求。根据输入与耦合端的功率差,常被分为5dB、6dB、10dB等耦合器。射频耦合器的类型主要包括定向耦合…