【ajax核心05】宏任务与微任务

ES6之后引入Promise对象(用来管理异步任务),让JS引擎也可以发起异步任务

一:异步任务分类

异步任务分为:宏任务与微任务

宏任务

由浏览器环境执行的异步代码

具体宏任务分类

请添加图片描述

微任务

由JS引擎执行的代码
在这里插入图片描述
创建Promise对象时,本身时同步任务。但是then与catch里面的回调函数是异步任务

二:JS内代码执行流程

  1. 执行script脚本事件宏任务中的同步代码
  2. 遇到宏任务/微任务交给对应的宿主环境,有结果的回调函数进入对应队列等待执行
  3. 执行栈空闲(同步任务执行完毕)时,优先清空微任务队列后,再执行宏任务队列中的任务

三:经典面试题

面试题1

<script>
    // 目标:回答代码执行顺序
    console.log(1)
    setTimeout(() => {
      console.log(2)
      const p = new Promise(resolve => resolve(3))
      p.then(result => console.log(result))
    }, 0)
    const p = new Promise(resolve => {
      setTimeout(() => {
        console.log(4)
      }, 0)
      resolve(5)
    })
    p.then(result => console.log(result))
    const p2 = new Promise(resolve => resolve(6))
    p2.then(result => console.log(result))
    console.log(7)
  </script>
  //1 7 5 6 2 3 4

面试题2

console.log(1)
    setTimeout(() => {
      // 宏任务
      console.log(2)
    }, 0)
    const p = new Promise((resolve, reject) => {
      resolve(3)
    })
    p.then(res => {
      //微任务
      console.log(res)
    })
    console.log(4)

打印顺序为:1 4 3 2
setTimeout与.then方法分别是宏任务与微任务,其执行时分别位于宏任务队列和微任务队列中。由于.then方法执行所在的环境在JS引擎中,所以其比在宏任务队列中的setTimeout更先执行。
微任务队列中的任务比宏任务队列中的任务更先执行

如何赚钱

现在是否厌倦了程序员朝九晚五的生活,想给自己生活寻找另一条路径;在校大学生是否愿意在校进行人生中的第一次创业,获取人生第一桶金;是否正在看此篇文章的你愿意通过五年努力,让自己开上梦想的中的车子;

那就从提升认知开始,加入微木的知识星球:微木的创业思考

专属于创业者的交流集中地,创业、认知提升找微木!

1 创业底层方法论

2 从千万本书书籍中挑选出的,人生必读书目清单。

3 认知提升学习资源(秘密)

4 寻找赚钱项目底层方法论

5 好书精华提炼

6 深度链接微木

每天仅需0.3元/天,欢迎加入专属于创业者的交流集中地,创业、认知提升找微木!
在这里插入图片描述

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

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

相关文章

数据清洗!即插即用!异常值、缺失值、离群值处理、残差分析和孤立森林异常检测,确保数据清洗的全面性和准确性,MATLAB程序!

适用平台&#xff1a;Matlab2021版及以上 数据清洗是数据处理和分析中的一个关键步骤&#xff0c;特别是对于像风电场这样的大型、复杂数据集。清洗数据的目的是为了确保数据的准确性、一致性和完整性&#xff0c;从而提高数据分析的质量和可信度&#xff0c;是深度学习训练和…

STM32单片机系统

1.STM32最小系统 微型计算机&#xff08;面&#xff09; 单片机最小系统是指能够将单片机芯片运行所必需的最少的硬件电路集成在一起的系统。 它是一种基本的单片机应用系统&#xff0c;通常由主芯片&#xff0c;时钟电路&#xff0c;复位电路&#xff0c;电源电路&#xff0c…

407串口01发送

实验一&#xff1a; 工程。 链接&#xff1a;https://pan.baidu.com/s/1g8DV4yZWOix0BbcZ08LYDQ?pwd2176 提取码&#xff1a;2176串口1的使用。发送功能。 单片机发送信息到电脑。 通过串口进行通信。 首先单片机这边。 单片机这边&#xff0c;需要对单片机的串口模块进行使…

小车启动底盘功能包

传感器与小车底盘的集成 新建功能包 catkin_create_pkg mycar_start roscpp rospy std_msgs ros_arduino_python usb_cam ydlidar_ros_driver功能包下创建launch文件夹&#xff0c;launch文件夹中新建launch文件&#xff0c;文件名start.launch。 内容如下 <!-- 机器人启动…

雷达标定与解析

融合雷达与解析雷达数据的相关代码。感谢开源社区的贡献。以下代码继承了很多人的工作。 如果是单雷达&#xff1a; 直接进行标定&#xff0c;所以就是接收相关的话题然后发布。 lidar_calibration_params.yaml&#xff1a; calibration:在这个接口里面x_offset: 0.0y_offset:…

免费内网穿透工具 ,快解析内网穿透解决方案

在IPv4公网IP严重不足的环境下&#xff0c;内网穿透技术越来越多的被人们所使用&#xff0c;使用内网穿透技术的好处有很多。 1&#xff1a;无需公网ip 物以稀为贵&#xff0c;由于可用的公网IP地址越来越少&#xff0c;价格也是水涨船高&#xff0c;一个固定公网IP一年的成本…

想让Python序列切片更高效?这些技巧你不可不知!

目录 1、自定义类实现切片 🍏 1.1 实现__getitem__方法 1.2 支持正负索引与步长 2、利用 collections.abc 模块 🧠 2.1 继承MutableSequence类 2.2 重写关键方法 3、使用标准库itertools.slice 🍲 3.1 itertools工具介绍 3.2 slice函数应用实例 4、通过生成器实…

Docker Compose--安装Nginx--方法/实例

原文网址&#xff1a;Docker Compose--安装Nginx--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker Compose如何安装Nginx。 目录结构 ├── config │ ├── cert │ │ ├── xxx_bundle.pem │ │ └── xxx.key │ ├── conf.d │ …

APP客户端接口本地缓存,降低请求量和请求峰值,减少云资源成本

背景 静态信息&#xff1a;非实时有状态的数据 针对资源位、评价等静态信息在xx点高峰时进行缓存&#xff0c;达到降低请求量和请求峰值的目标。 在成本预算控制下&#xff0c;云资源成本和WAF都受限于请求峰值。 出于业务和数据安全考虑&#xff0c;公司希望接入阿里云的WAF&a…

头歌——机器、深度学习——手写体识别

第1关&#xff1a;神经网络基本概念 任务描述 本关任务&#xff1a;根据本节课所学知识完成本关所设置的选择题。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.神经网络基本概念。 神经网络基本概念 神经网络由输入层、隐藏层、输出层组成&#xff1b;…

安卓逆向经典案例—H5appXX运维

H5app的class不一定是android.webkit.WebView 也可能是腾讯X5内核或者是uc webview 殊途同归也要去hook webview的系统函数和可调式方法setWebContentsDebuggingEnabled。突破sign算法&#xff0c;输出协议和加密算法的作用是什么&#xff1f;分析c-sign值 在加密的位置下断点 …

爱心商城管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;企业管理&#xff0c;用户管理&#xff0c;论坛管理&#xff0c;商品管理&#xff0c;公告管理&#xff0c;用户捐赠 企业账户功能包括&#xff1a;系统首页&#xff0c;个人中…

2009年-2022年 地级市-环境污染处罚数据

环境污染处罚数据是环境保护领域中重要的信息资源&#xff0c;它记录了因违反环保法律法规而受到行政处罚或法律制裁的具体情况。这些数据对于提高公众的环保意识、促进企业采取环保措施以及推动环境治理具有重要作用。 数据内容概述 违法行为的主体&#xff1a;即受到处罚的…

【树形dp 换根法 BFS】2581. 统计可能的树根数目

本文涉及知识点 CBFS算法 动态规划汇总 图论知识汇总 树形dp 换根法 BFS LeetCode 2581. 统计可能的树根数目 Alice 有一棵 n 个节点的树&#xff0c;节点编号为 0 到 n - 1 。树用一个长度为 n - 1 的二维整数数组 edges 表示&#xff0c;其中 edges[i] [ai, bi] &#xf…

LoRaWAN在嵌入式网络通信中的应用:打造高效远程监控系统(附代码示例)

引言 随着物联网&#xff08;IoT&#xff09;技术的发展&#xff0c;远程监控系统在各个领域的应用越来越广泛。LoRaWAN&#xff08;Long Range Wide Area Network&#xff09;作为一种低功耗广域网通信协议&#xff0c;因其长距离传输、低功耗和高可靠性等特点&#xff0c;成为…

Apollo9.0 PNC源码学习之Planning模块(二)—— planning_component

前面文章: Apollo9.0 PNC源码学习之Planning模块(一)—— 规划概览 0 Planning代码框架速览 1 planning_component源码解析 modules/planning/planning_component/planning_component.h #pragma once#include <memory>#

在vue项目中集成cesium

首先创建一个新的vue项目 安装vite中cesium插件 https://github.com/nshen/vite-plugin-cesium 安装插件 npm i cesium vite-plugin-cesium vite -D配置插件 注释原有样式 修改代码 效果

04--MySQL8.0_JDBC

第一章 JDBC概述 之前我们学习了JavaSE,编写了Java程序,数据保存在变量、数组、集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系; 后来我们学习了数据库管理软件MySQL,可以方便的管理数据1。 那么如何将它俩结合起来呢?即…

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

【面试干货】Java中的四种引用类型&#xff1a;强引用、软引用、弱引用和虚引用 1、强引用&#xff08;Strong Reference&#xff09;2、软引用&#xff08;Soft Reference&#xff09;3、弱引用&#xff08;Weak Reference&#xff09;4、虚引用&#xff08;Phantom Reference…

【Docker】Docker操作容器命令

1、容器 1.1简介 容器镜像是一个软件的轻量级独立可执行软件包&#xff0c;包含运行它所需的一切&#xff1a;代码&#xff0c;运行时&#xff0c;系统工具&#xff0c;系统库&#xff0c;设置。不管环境如何&#xff0c;集装箱化软件都可以运行相同的Linux和Windows应用程序…