异步编程(JS)

news2024/11/15 12:50:39

前言

想要学习Promise,我们首先要了解异步编程回调函数回调地狱三方面知识:

异步编程

异步编程技术使你的程序可以在执行一个可能长期运行的任务的同时继续对其他事件做出反应而不必等待任务完成。
与此同时,你的程序也将在任务完成后显示结果。

在这里插入图片描述
举个栗子:

假设现在老板让你修改一个很紧急并且很重要的代码,让你下班前必须改完。并且为了督促进度,老板搬了个椅子坐在一边盯着你敲。

你心里肯定已经犯嘀咕:“你有这么闲吗?就不能去干点其他事情吗?”

老板仿佛接收到了你的心电图一样:“我就在这等着,你改完代码之前我哪也不去。”

这个例子中老板交给你任务后就一直等待什么都不做直到你改完,这个场景就是所谓的同步

第二天,老板又交给了你一项任务。

不过这次就没那么着急啦,这次老板轻描淡写“今天的这个代码不着急,你写完告诉我一声就行。”

这次老板没有盯着你写代码而是转身刷视频去了,你写完后简单的和老板报告了一声“我写完啦!”

这个例子老板交代完任务就去忙其它事情,你完成任务后简单的告诉老板任务完成,这就是所谓的异步

值得注意的是:在异步这种场景下你在改代码的同时老板在刷视频,这两件事在同时进行因此这就是异步比同步高效的本质


异步任务相对应的概念是同步任务,同步任务在主线程上排队执行,只有前一个任务执行完毕,才能执行下一个任务。异步任务不进入主线程,而是进入异步队列,前一个任务是否执行完毕不影响下一个任务的执行。这里拿定时器作为异步任务举例:

// setTimeout中的内容不会先被输出,而是先输出异步任务之后的内容
    setTimeout(() => {
        console.log('我在定时器里捏!!')
    }, 2000)
    console.log('我在定时器后捏~~')

如果按照代码编写的顺序,应该先输出我在定时器里捏!!,再输出我在定时器后捏~~。但实际输出为:

在这里插入图片描述

这种不阻塞后面任务执行的任务就叫做异步任务

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

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

相关文章

SpringBoot:日志框架

使用日志框架demo:点击查看LearnSpringBoot04logging 点击查看更多的SpringBoot教程 一、springboot日志框架简介 SpringBoot:底层是Spring框架,Spring框架默认是用ICL; SpringBoot选用SLF4j和logback; 统一使用slf4…

Modern C++ 内存篇1 - std::allocator VS pmr

大年三十所写,看到就点个赞吧!祝读者们龙年大吉!当然有问题欢迎评论指正。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. 前言 从今天起我们开始内存相关的话题,内存是个很大的话题,一时不…

Mac 版 Excel 和 Windows 版 Excel的区别

Excel是一款由微软公司开发的电子表格程序,广泛应用于数据处理、分析和可视化等领域。它提供了丰富的功能和工具,包括公式、函数、图表和数据透视表等,帮助用户高效地处理和管理大量数据。同时,Excel还支持与其他Office应用程序的…

传输层协议 ——— TCP协议

TCP协议 TCP协议谈谈可靠性为什么网络中会存在不可靠?TCP协议格式TCP如何将报头与有效载荷进行分离?序号与确认序号 确认应答机制(ACK)超时重传机制连接管理机制三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字…

架构整洁之道-软件架构-测试边界、整洁的嵌入式架构、实现细节

6 软件架构 6.14 测试边界 和程序代码一样,测试代码也是系统的一部分。甚至,测试代码有时在系统架构中的地位还要比其他部分更独特一些。 测试也是一种系统组件。 从架构的角度来讲,所有的测试都是一样的。不论它们是小型的TDD测试&#xff…

【Java】eclipse连接MySQL数据库使用笔记(自用)

注意事项 相关教程:java连接MySQL数据库_哔哩哔哩_bilibilijava连接MySQL数据库, 视频播放量 104662、弹幕量 115、点赞数 1259、投硬币枚数 515、收藏人数 2012、转发人数 886, 视频作者 景苒酱, 作者简介 有时任由其飞翔,有时禁锢其翅膀。粉丝群1&…

IoC原理

Spring框架的IOC是基于Java反射机制实现的,那具体怎么实现的,下面研究一下 反射 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法…

【doghead】uv_loop_t的创建及线程执行

worker测试程序,类似mediasoup对uv的使用,是one loop per thread 。创建一个UVLoop 就可以创建一个uv_loop_t Transport 创建一个: 试验配置创建一个: UvLoop 封装了libuv的uv_loop_t ,作为共享指针提供 对uv_loop_t 创建并初始化

Kafka 下载与启动

目录 一. 前言 二. 版本下载 2.1. 版本说明 三. 快速启动 3.1. 下载解压 3.2. 启动服务 3.3. 创建一个主题(Topic) 3.4. 发送消息 3.5. 消费消息 3.6. 使用 Kafka Connect 来导入/导出数据 3.7. 使用 Kafka Stream 来处理数据 3.8. 停止 Kaf…

Python中HTTP隧道的基本原理与实现

HTTP隧道是一种允许客户端和服务器之间通过中间代理进行通信的技术。这种隧道技术允许代理服务器转发客户端和服务器之间的所有HTTP请求和响应,而不需要对请求或响应内容进行任何处理或解析。Python提供了强大的网络编程能力,可以使用标准库中的socket和…

疑似针对安全研究人员的窃密与勒索

前言 笔者在某国外开源样本沙箱平台闲逛的时候,发现了一个有趣的样本,该样本伪装成安全研究人员经常使用的某个渗透测试工具的破解版压缩包,对安全研究人员进行窃密与勒索双重攻击,这种双重攻击的方式也是勒索病毒黑客组织常用的…

攻防世界 CTF Web方向 引导模式-难度1 —— 1-10题 wp精讲

目录 view_source robots backup cookie disabled_button get_post weak_auth simple_php Training-WWW-Robots view_source 题目描述: X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。 不能按右键,按F12 robots …

springboot+vue居民小区设备报修系统

小区报修系统可以提高设施维护的效率,减少机构的人力物力成本,并使得维修人员可以更好地了解维护设备的情况,及时解决问题。 对于用户来说,报修系统也方便用户的维修请求和沟通,提高了用户的满意度和信任。其次小区报修…

CTFshow web(命令执行 41-44)

web41 <?php /* # -*- coding: utf-8 -*- # Author: 羽 # Date: 2020-09-05 20:31:22 # Last Modified by: h1xa # Last Modified time: 2020-09-05 22:40:07 # email: 1341963450qq.com # link: https://ctf.show */ if(isset($_POST[c])){ $c $_POST[c]; if(!p…

ubuntu原始套接字多线程负载均衡

原始套接字多线程负载均衡是一种在网络编程中常见的技术&#xff0c;特别是在高性能网络应用或网络安全工具中。这种技术允许应用程序在多个线程之间有效地分配和处理网络流量&#xff0c;提高系统的并发性能。以下是关于原始套接字多线程负载均衡技术的一些介绍&#xff1a; …

【已解决】:pip is configured with locations that require TLS/SSL

在使用pip进行软件包安装的时候出现问题&#xff1a; WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 解决&#xff1a; mkdir -p ~/.pip vim ~/.pip/pip.conf然后输入内容&#xff1a; [global] ind…

vue3 之 商城项目—详情页

整体认识 路由配置 准备组件模版 <script setup></script><template><div class"xtx-goods-page"><div class"container"><div class"bread-container"><el-breadcrumb separator">">&…

C++进阶(十三)异常

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C语言传统的处理错误的方式二、C异常概念三、异常的使用1、异常的抛出和捕获2、异常的重新…

Vue.js2+Cesium1.103.0 十五、绘制视锥,并可实时调整视锥姿态

Vue.js2Cesium1.103.0 十五、绘制视锥&#xff0c;并可实时调整视锥姿态 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"/> </template><script> /* eslint-disable no-undef */ /* eslint-disable …

Flink从入门到实践(一):Flink入门、Flink部署

文章目录 系列文章索引一、快速上手1、导包2、求词频demo&#xff08;1&#xff09;要读取的数据&#xff08;2&#xff09;demo1&#xff1a;批处理&#xff08;离线处理&#xff09;&#xff08;3&#xff09;demo2 - lambda优化&#xff1a;批处理&#xff08;离线处理&…