如何使用 promise 和async、await 结合处理异步中的同步请求

文章目录

    • 需求
    • 分析

需求

需求:让代码执行完循环A再进入代码B进行执行

分析

  • 概念:
    • 当我们谈论同步(Synchronous)和异步(Asynchronous)时,可以将其简单地理解为不同的任务处理方式。

    • 同步操作是指程序按照顺序一步一步地执行,每个操作都要等待上一个操作完成后才能进行下一个操作。就像你在读文章时,必须先读完前面的章节才能继续往下读,不能跳过中间的内容。在同步操作中,每个操作都会阻塞程序的执行,直到它完成为止。

    • 异步操作则不同,它允许程序在执行某个操作时继续执行其他操作,而不需要等待该操作完成。这就好比你在看电视时,可以边看边吃零食或者做其他事情。在异步操作中,当某个操作被触发后,程序会立即注册这个操作,并继续执行后面的代码,而不会阻塞程序的执行。

    • 常见的例子可以是发送网络请求。当你使用同步方式发送网络请求时,程序会停下来,直到请求完成并获取到响应后才能继续执行后面的代码。而使用异步方式发送网络请求时,程序会立即发起请求,并不会等待请求的返回结果,可以继续执行后续的代码。当请求完成后,程序会通过回调函数或者事件触发来处理获取到的响应。

    • 总结起来,同步操作是按照顺序逐个执行,会阻塞程序的执行,需要等待上一个操作完成再进行下一个操作。而异步操作则是允许程序在执行某个操作时继续执行其他操作,不需要等待当前操作完成。异步操作常用于需要花费较长时间的任务,以提高程序的性能和响应能力。

    • 参考博主文章:处理异步请求的 async/await 和 promise
      使用 JavaScript 中的异步编程方式来实现。以下是一种简单的做法:

  • 将循环 A 的代码封装成一个返回 Promise 的函数,例如:
function loopA() {return new Promise(resolve => {for (let i = 0; i < 10; i++) {console.log(`loopA ${i}`);}resolve(); // 在循环结束后调用 resolve(),表示 Promise 已完成});
}
  • 在需要等待循环 A 执行完成后再进入代码 B 的地方,使用 await 关键字来等待 Promise 完成,例如:
async function run() {await loopA();console.log('enter code B');// 在这里编写进入代码 B 的语句
}
run();
  • 在上述代码中,我们使用 async/await 语法,将 run 函数声明为异步函数。在 run 函数中,我们首先使用 await 关键字来等待循环 A 的 Promise 完成,等待 Promise 完成后,代码才会继续执行下一行。因此,在这里代码会等待循环 A 执行完成后,才会输出“enter code B”这一行的日志,进入代码 B 进行执行。

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

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

相关文章

体验SOLIDWORKS钣金切口工具增强 硕迪科技

在工业生产制造中&#xff0c;钣金加工是一种常用的加工方式&#xff0c;在SOLIDWORKS2024新版本中&#xff0c;钣金切口工具再次增强了&#xff0c;从SOLIDWORKS 2024 开始&#xff0c; 您可以使用切口工具在空心或薄壁圆柱体和圆锥体中生成切口。 只需在现有空心或薄壁圆柱体…

Vue监听事件

一、问题场景 项目有个需求&#xff0c;在登录页面&#xff0c;输入好账号密码后&#xff0c;直接可以点击回车就能够登录&#xff0c;效果和点击登录按钮一样&#xff0c;登录页面源码如下 <template><body id"poster"><el-form class"login-…

基于ThinkPHP+MySQL实现的通用的PHP网站后台管理系统

caozha-admin 后台管理框架 1.8.3 caozha-admin是一个通用的PHP网站后台管理框架&#xff0c;基于开源的ThinkPHP开发&#xff0c;特点&#xff1a;易上手&#xff0c;零门槛&#xff0c;界面清爽极简&#xff0c;极便于二次开发。 基础功能 1、系统设置 2、管理员管理 3、…

金蝶云星空任意文件上传漏洞复现(0day)

0x01 产品简介 金蝶云星空是一款云端企业资源管理&#xff08;ERP&#xff09;软件&#xff0c;为企业提供财务管理、供应链管理以及业务流程管理等一体化解决方案。金蝶云星空聚焦多组织&#xff0c;多利润中心的大中型企业&#xff0c;以 “开放、标准、社交”三大特性为数字…

大数据与健康:技术助力医疗卫生事业腾飞

大数据与健康&#xff1a;技术助力医疗卫生事业腾飞 随着科技的飞速发展&#xff0c;大数据技术已经渗透到我们生活的方方面面&#xff0c;包括医疗卫生领域。本文将对大数据在健康医疗领域的应用进行分析&#xff0c;并通过数据图表展示其发展趋势和前景。 一、背景介绍 近…

YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!

YOLOV8 GradCam 热力图可视化. 本文给大家带来yolov8-gradcam热力图可视化&#xff0c;这个可视化是即插即用&#xff0c;不需要对源码做任何修改喔&#xff01;给您剩下的不少麻烦&#xff01; 代码链接&#xff1a;yolo-gradcam 里面还有yolov5和v7的热力图可视化代码&#…

MathType7.6最新免费Offic数学公式编辑器插件

一直以来&#xff0c;如何在文档中优雅地输入数学公式就是一个难题&#xff0c;虽然 Office 中有自带的数学公式编辑器&#xff0c;但是要实现一些高级的编辑操作是非常困难的&#xff0c;比如公式编号&#xff0c;复杂公式编辑&#xff0c;改变公式字体字号&#xff0c;在很长…

第2篇 机器学习基础 —(4)k-means聚类算法

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。聚类算法是一种无监督学习方法&#xff0c;它将数据集中的对象分成若干个组或者簇&#xff0c;使得同一组内的对象相似度较高&#xff0c;不同组之间的对象相似度较低。聚类算法可以用于数据挖掘、图像分割、文本分类等领域…

在Qt中解决opencv的putText函数无法绘制中文的一种解决方法

文章目录 1.问题2.查阅资料3.解决办法 1.问题 在opencv中&#xff0c;假如直接使用putText绘制中文&#xff0c;会在图像上出现问号&#xff0c;如下图所示&#xff1a; 2.查阅资料 查了一些资料&#xff0c;说想要解决这个问题&#xff0c;需要用到freetype库或者用opencv…

这个超实用的门禁技巧,让办公楼安全更简单高效!

门禁监控是现代社会中不可或缺的一部分&#xff0c;用于确保安全和管理进出某个区域的人员。随着科技的不断发展&#xff0c;门禁监控已经远离了传统的机械锁和钥匙&#xff0c;变得更加智能化和高效。 客户案例 企业办公大楼 无锡某大型企业在其办公大楼内部部署了泛地缘科技…

我在Vscode学OpenCV 基本的加法运算

根据上一篇我们可知__图像的属性 链接&#xff1a;《我在Vscode学OpenCV 处理图像》 属性— API 形状 img.shape 图像大小 img.size 数据类型 img.dtype  shape&#xff1a;如果是彩色图像&#xff0c;则返回包含行数、列数、通道数的数组&#xff1b;如果是二值图像或者灰度…

Java 8 中的 Stream API - map() 方法详解

摘要&#xff1a; Java 8 中的 Stream API 提供了一种新的处理集合和数组的方式&#xff0c;可以使代码更加简洁、易读&#xff0c;同时还可以提高性能。其中 map() 方法是比较常用的方法之一&#xff0c;它可以将 Stream 对象中的每个元素映射为另一个元素。本文将对 Java 8 中…

建议收藏《2023华为海思实习笔试-数字芯片真题+解析》(附下载)

华为海思一直以来是从业者想要进入的热门公司。但是岗位就那么多&#xff0c;在面试的时候&#xff0c;很多同学因为准备不充分&#xff0c;与岗位失之交臂&#xff0c;无缘进入该公司。今天为大家带来《2023华为海思实习笔试-数字芯片真题解析》题目来源于众多网友对笔试的记录…

Windows经常提示更新怎么办?一招暂停66年,绝对靠谱!

windows10/11的更新频率非常高&#xff0c;也经常会修复旧bug的同时带来一些新的bug。所以有些人不喜欢系统的自动更新&#xff0c;总想把它禁用掉。禁用系统更新的软件有很多&#xff0c;不过这些方法大多是强行禁止&#xff0c;有时候会引来一些其它的问题。 所以为了阻止Win…

前端js实现井字游戏和版本号对比js逻辑【适用于vue和react】

// 实现 compareVersion 方法&#xff0c;用于比较两个版本号&#xff08;version1、version2&#xff09; * 如果version1 > version2&#xff0c;返回1&#xff1b; * 如果version1 < version2&#xff0c;返回-1&#xff1b; * 其他情况&#xff0c;返回0。 * 版本号规…

【操作系统】考研真题攻克与重点知识点剖析 - 第 1 篇:操作系统概述

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

Web的兼容性测试主要测什么?

1.兼容性测试主要测什么&#xff1f; 对于兼容性测试我了解的很少&#xff0c;之前觉得兼容性测试&#xff0c;就是开发出来网站&#xff0c;在不同的浏览器上显示的是否正常&#xff0c;会不会因为浏览器不同&#xff0c;网站的显示样式&#xff0c;功能&#xff0c;获取的数…

Flink源码解析四之任务调度和负载均衡

源码概览 jobmanager scheduler:这部分与 Flink 的任务调度有关。 CoLocationConstraint:这是一个约束类,用于确保某些算子的不同子任务在同一个 TaskManager 上运行。这通常用于状态共享或算子链的情况。CoLocationGroup & CoLocationGroupImpl:这些与 CoLocationCon…

纠结蓝桥杯参加嵌入式还是单片机组?

纠结蓝桥杯参加嵌入式还是单片机组? 单片机包含于嵌入式&#xff0c;嵌入式不只是单片机。. 你只有浅浅的的单片机基础&#xff0c;只能报单片机了。最近很多小伙伴找我&#xff0c;说想要一些单片机资料&#xff0c;然后我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵…

核心舱在轨飞行VR沉浸式互动体验满足大家宇宙探险的心愿

近日神州十七号载人飞船迎来发射&#xff0c;随着我国载人航天工程进入空间站应用与发展阶段&#xff0c;在轨航天探索和运维工作进入常态化阶段&#xff0c;然而每次出征都牵动着亿万人民的心&#xff0c;对航天航空的好奇和向往也越来越强烈。为了让普通人也能体验乘坐飞船上…