js在处理异步任务时,forEach和for...of循环之间的区别

先看效果
在这里插入图片描述
forEach循环:
1、forEach是数组的原生方法,用于遍历数组。
2、它无法直接处理异步任务,因为它不会等待每个任务的完成,而是立即执行下一个任务。
3、这意味着如果在forEach循环中执行异步任务,它们将会同时进行,可能导致结果的顺序混乱或出现其他问题。
示例:

    const getVideoResolutionRatio = (val) => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(val * 2);
        }, 1200)
      });
    }
    
    const getValueForEach = async () => {
      const videoFiles = [1, 2, 3];
      let tempList = [];
      videoFiles.forEach(async (item) => {
        let reslut = await getVideoResolutionRatio(item);
        tempList.push(reslut);
      })
      return tempList
    }
     // ForEach获取值:
    const testForEach = async () => {
      let test = await getValueForEach()
      console.log(test);
    }
    testForEach() //输出[]

在上述示例中,异步任务asyncTask被放在forEach循环中。由于forEach不会等待异步任务的完成。

for…of循环:
for…of循环是ES6引入的一种遍历方式,可以用于遍历可迭代对象(如数组、字符串、Set、Map等)。
它支持await关键字,可以在循环体中等待异步任务的完成。
for…of循环会按照顺序依次处理每个异步任务,等待上一个任务完成后再执行下一个任务。
示例:

    const getVideoResolutionRatio = (val) => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(val * 2);
        }, 1200)
      });
    }

    const getValueForOf = async () => {
      const videoFiles = [1, 2, 3];
      let tempList = [];
      for (const item of videoFiles) {
        let reslut = await getVideoResolutionRatio(item);
        tempList.push(reslut);
      }
      return tempList
    }


    // ForOf获取值:
    const testForOf = async () => {
      let test = await getValueForOf()
      console.log(test);
    }
    testForOf() //输入[2, 4, 6]

在上述示例中,使用了for…of循环来遍历数组,并在循环体中使用await关键字等待异步任务的完成。这样可以保证按照数组的顺序依次输出结果。

总结:,for…of循环在处理异步任务时更加可靠,可以控制任务的顺序和流程,而forEach循环无法直接处理异步任务,容易导致结果的混乱。

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

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

相关文章

29. 【Java教程】异常处理

Java 的异常处理是 Java 语言的一大重要特性,也是提高代码健壮性的最强大方法之一。当我们编写了错误的代码时,编译器在编译期间可能会抛出异常,有时候即使编译正常,在运行代码的时候也可能会抛出异常。本小节我们将介绍什么是异常…

多方法总结,怎么修改图片格式为jpg?

在数字化时代,我们常常需要灵活地处理图片,以适应不同的需求和平台。而在这个过程中,将图片格式修改为JPEG(JPG)是一项常见的任务。 JPEG格式以其压缩算法和较小的文件大小而成为互联网上最常见的图片格式之一。怎么修…

链式法则:神经网络前向与反向传播的基石

在深度学习的浪潮中,神经网络以其强大的学习和预测能力,成为解决复杂问题的有力工具。而神经网络之所以能够不断学习和优化,离不开两个核心过程:前向传播和反向传播。其中,链式法则作为微积分学中的一个基本概念&#…

校企携手|泰迪智能科技与高新启动「大数据应用技术」深度合作项目

5月22日,广东泰迪智能科技股份有限公司携手广东省高新技术高级技工学校举行“泰迪高新技术学校大数据双创工作室”暨广东省“产教评”技能生态链学生学徒公共实训基地签约揭牌仪式,标志着双方合作共建大数据应用技术专业、产教生态链实训基地及泰迪高新大…

如何在Android手机恢复误删除的数据

电话数据对我们至关重要。我们可以替换我们使用的设备,但不能替换我们的数据。我们以前一直在使用 CD、USB 和硬盘驱动器来保存数据。随着技术的出现,我们遇到了云存储。我们可以从任何地方和任意次数访问的存储。所有操作系统都有数据云,可用…

【Linux】23. 线程封装

如何理解C11中的多线程(了解) #include <iostream> #include <unistd.h> #include <thread>void thread_run() {while (true){std::cout << "我是新线程..." << std::endl;sleep(1);} } int main() {// 任何语言需要在Linux上实现多线…

博途S7-1200/1500PLC区域长度错误

S7-1200/1500PLC故障有时提示PLC区域长度错误&#xff0c;如下图所示 1、区域长度错误 未完...

前端开发攻略---三种方法解决Vue3图片动态引入问题

目录 1、将图片放入public文件夹中 2、使用 /src/.... 路径开头 3、生成图片的完整URL地址&#xff08;推荐&#xff09; 1、将图片放入public文件夹中 使用图片&#xff1a;路径为 /public 开头 <template><div><img :src"/public/${flag ? 01 : 02}.jp…

【2024最新华为OD-C卷试题汇总】单词大师 (100分) - 支持在线评测+三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; 文章目录 前…

JAVA系列:NIO

NIO学习 一、前言 先来看一下NIO的工作流程图&#xff1a; NIO三大核心组件&#xff0c;channel&#xff08;通道&#xff09;、Buffer&#xff08;缓冲区&#xff09;、selector&#xff08;选择器&#xff09;。NIO利用的是多路复用模型&#xff0c;一个线程处理多个IO的读…

掌控未来,爱普生SR3225SAA用于汽车钥匙、射频电路的智慧引擎

为了响应市场需求&#xff0c;Epson使用独家QMEMS*2技术所生产的石英振荡器&#xff0c;与其精巧的半导体技术所制造的射频传输器电路&#xff0c;开发了SR3225SAA。不仅内建的石英震荡器之频率误差仅有2 ppm&#xff0c;更使其封装尺寸达仅3.2 mm x 2.5 mm&#xff0c;为客户大…

Owinps静态IP代理:跨境电商的优选解决方案

在快速发展的电子商务领域&#xff0c;尤其是跨境电商行业&#xff0c;网络的稳定性和安全性是成功经营的关键因素之一。在这背后&#xff0c;少不得一个重要的跨境电商工具——代理IP&#xff0c;而这其中&#xff0c;静态IP因其独特的稳定性和安全性&#xff0c;正逐渐成为众…

git 学习(一)

一、版本控制 &#xff08;一&#xff09;介绍 版本迭代 每一次更新代码 都会出现新的版本如果我们需要之前的版本的文件 我们就得需要版本控制的文件 每一次更新的结果我们都保存下来 多人开发必须要用版本控制器 否则代价会很大 &#xff08;二&#xff09;主流的版本控制…

7款令人惊艳的UI界面设计模板分享

UI界面设计始终围绕用户展开&#xff0c;终极产品界面设计中的用户体验功能必须细致。对于UI设计师来说&#xff0c;欣赏优秀的UI界面设计模板不仅能给我们带来源源不断的灵感&#xff0c;还能激发我们对谁的思考和感悟。为了激发设计师的设计思维和灵感&#xff0c;本文将介绍…

网络编程基础(四)

目录 前言 二、多点通信 2.1 单播 2.2 广播 2.2.1 广播得发送端实现--》类似与UDP的客户端 2.3 组播 2.3.1 组播发送端流程--》类似于UDP的客户端流程 2.3.2 组播的接收端流程---》类似于UDP的服务器端流程 前言 多点通信 一、套接字选项得获取和设置 int getsockopt(int…

制作Dcoker镜像

文章目录 一、Docker构建镜像的原理1、镜像分层原理2、Docker的镜像结构3、分层存储原理4、构建命令与层的关系5、最终镜像的创建 二、docker commit 构建镜像1、使用场景2、手动制作yum版的nginx镜像2.1、启动一个centos容器&#xff0c;安装好常用的软件以及nginx2.2、关闭ng…

如何利用Firebase Hosting来托管网站

文章目录 如何利用Firebase Hosting来托管网站前提条件详细步骤1. 安装 Firebase CLI2. 登录 Firebase3. 初始化 Firebase 项目4. 准备网站文件5. 部署到 Firebase6. 配置自定义域名&#xff08;可选&#xff09; 常见问题 如何利用Firebase Hosting来托管网站 以下是更详细的…

硬盘的分区的类型及创建分区的步骤及交换分区、永久挂载的方法

业务层面&#xff1a;为了满足一定的需求所做的特定操作。 硬盘是什么&#xff0c;以及硬盘的作用。 硬盘&#xff1a;计算机的存储设备&#xff0c;一个或者多个带磁性的盘组成&#xff0c;可以在盘片上进行数据的读写 连接方式&#xff1a;内部设备 外部设备&#xff08;移…

linux /www/server/cron内log文件占用空间过大,/www/server/cron是什么内容,/www/server/cron是否可以删除

linux服务器长期使用宝塔自带计划任务&#xff0c;计划任务执行记录占用服务器空间过大&#xff0c;导致服务器根目录爆满&#xff0c;需要长期排查并删除 /www/server/cron 占用空间过大问题处理 /www/server/cron是什么内容&#xff1f;/www/server/cron是否可以删除&#xf…

低代码开发与人工智能技术在商品推荐系统中的应用

引言 低代码开发和人工智能技术的背景和重要性 随着数字化转型的深入&#xff0c;企业在信息技术领域面临着前所未有的挑战和机遇。快速变化的市场需求、日益复杂的技术环境以及高度竞争的商业环境&#xff0c;迫使企业不断寻求高效的开发和运营解决方案。低代码开发平台应运而…