evenloop事件循环机制

news2024/11/24 12:39:00

宏任务:script(整体代码),setTimeout,setInterval,setImmediate,i/o,UIrendering
微任务:promise,async/await,Object.observe,MutationObserver【微任务中newPromise是同步的,then和catch是异步的】
JS是单线程语言, 它会先执行同步, 在执行异步,[异步任务分为宏任务和微任务];
同步任务会放到主线程中执行, 异步任务会提交放置到异步任务队列, 等同步执行完了之后在执行异步任务队列,异步任务队列先进先出【即先放到异步任务队列的等同步执行完就先执行】;

一个完整的事件循环机制包括:宏任务和微任务,【每一个宏任务都有自己的一个微任务队列】,宏任务和微任务加起来就是一个完整的事件循环;

/*
JS是单线程语言, 它会先执行同步, 在执行异步,[异步任务分为宏任务和微任务];事件循环当中宏任务➕上微任务是一个完整的事件循环
同步任务会放到主线程中执行, 异步任务会提交放置到异步任务队列, 等同步执行完了之后在执行异步任务队列,异步任务队列
先执行同步在执行异步,执行完同步 →执行微任务 → 宏任务 → 微任务…无限循环;
*/
在这里插入图片描述

代码执行的时候
先走整体宏任务代码,当遇到微任务,会先把微任务放到整体代码宏任务的后面执行,等整体代码执行完再去执行微任务,这就是一个完整的事件循环,如果在执行整体宏任务代码的时候,遇到了宏任务那么这个宏任务就会被放到下一个事件循环机制当中执行,等上一个事件循环执行完,在执行这个事件循环的宏任务,以此类推;

console.log(1)
    setTimeout(() => {
        console.log(2)
    })
    var b = new Promise(function (resolve, reject) {
        console.log(3);
        resolve('输出的东西');
    });
    b.then(() => {
        console.log(4);
    })

输出结果是1,3,4,2;

在这里插入图片描述

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

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

相关文章

Leetcode-每日一题【19.删除链表的倒数第N个结点】

题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2输出:[1,2,3,5] 示例 2: 输入:head [1], n 1输出:[] 示例 3&#x…

没有人能真正精通C++

任何说自己很懂C的人可能都是在夸大其词。 我想你可能已经注意到了,是的,今天的大多数程序员都在使用Python、Rust、Go或是其他新的编程语言。大部分人已经不再需要掌握C、C等古老的编程语言了,甚至很多程序员已经从手动编码开始向AI编码转型…

050、事务设计之Percolator事务模型

Percolator 背景 Bigtable: 大表打散每行到各个节点,每一行作为一个kv。解决的问题 一个事务涉及的行在多个节点,如何用单行对一个事务进行控制,实现原子性。 快照隔离级别(snapshot ) 白色点:代表事务开始…

.Net5 mvc项目UseBrowserLink插件功能失效的原因

前期基于.Net Framework创建的Web项目,使用了BrowserLink插件协助前端开发,功能一直都比较稳定,后来项目迁到.Net5 ,发现BrowserLink 已经失去了从浏览器定位到项目源代码的功能,希望在后面的版本还能继续支持此版本&a…

分区类型ID一键变身!快速改变分区类型ID的简单方法

分区类型ID是什么? 想要改变分区类型ID,先得明白分区类型ID是什么。大多数电脑用户可能只熟悉分区和分区类型,实际上有5种分区类型:主分区、可扩展固件接口(EFI)、扩展分区、逻辑分区和Microsoft保留分…

gitbash2.41安装教程——2023.07

文章目录 1、下载安装包2、安装 1、下载安装包 进入官网下载,官网链接 上面有多种系统可以选择,我是windows,点击windows进行下载 这里可以直接下载最新版本的git 2.41.0 64位。 下载可能有点慢,耐心等待。 2、安装 下载完…

什么是云应用程序?

应用程序优先的云服务的日益普及导致应用程序与云服务的融合程度比以前更深。应用程序和云之间的运行时边界正在从虚拟机转移到容器和函数。集成边界正在从仅访问数据库和消息代理转向应用程序的机械部分混合并在云中运行的边界。在这个最终架构中,应用程序是“云绑…

02 QPushButton的基本使用

Tips: 在使用控件的时候如果没有智能提示,可能是没有包含头文件 在运行时,报【invalid use of xxx】可能是没有包含相关头文件 如果出现中文乱码:设置编译器的编码格式为UTF-8 本节主要包含创建一个按钮控件、显示按钮、设置按钮的父窗口、设…

【java】【基础2】程序流程控制

目录 一、最经典的三种执行顺序 二、分支结构 2.1 if 2.2 switch 2.3 if与switch区别 三、循环结构 3.1 for循环 3.2 while循环 3.3 do-while循环 3.4 三种循环区别 3.5 补充知识:死循环 3.6 补充知识:循环嵌套 四、跳转关键字:br…

轮廓提取demo

note 步骤: 1.滤波(使用高斯核对原图卷积) 2.取梯度(使用sobel核对步骤1之后的图卷积得到x,y两个方向的梯度分量) 3.合成梯度图(x,y两个方向的梯度分量相加) 4.取梯度平方和矩阵(x*x y*y) 5.取八邻域掩膜(3x3矩阵) 6.根据掩膜,合成梯度图&#x…

AIC8800 WIFI调试记录

问题:AIC8800 USB 接口WIFI模块无法识别 现象: 上层:WIFI打不开 驱动层:usb无法识别到AIC8800模块 A133P:/ $ lsusb Bus 001 Device 001: ID 1d6b:0002 Bus 001 Device 002: ID 1a40:0101 Bus 002 Device 001: ID 1d6b:0001 Bus…

postgresql regular lock常规锁申请与释放 内幕 以及fastpath快速申请优化的取舍

​专栏内容: postgresql内核源码分析 手写数据库toadb 并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 定义 每种常规锁都需要定义几个要素,它由结构体 Lo…

MySQL中这14个小玩意,让人眼前一亮!!!

前言 我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。 1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中…

跨境电商市场迎来发展新机遇,如何利用IPIDEA扩大市场份额

根据Adobe Analytics的数据,美国消费者在亚马逊Prime Day期间花费了127亿美元,同比增长6.1%,创下历史新高。这一数据表明,亚马逊的会员日促销活动,持续吸引着消费者的关注和购买欲。跨境电商的迅速发展为普通商家提供了…

不得不会的软件测试bug分析定位技巧

目录 1.web前端 2.web后端 3.性能测试 身为测试工程师,总有一道绕不过去的坎就是定位bug,这其实是非常花费时间的。 也许有很多人不以为然,觉得无非就是发现bug后提交bug管理系统,描述操作步骤,预期结果和实际结果…

正则表达式与文本处理器

文本处理器三剑客:grep(查找) sed awk 正则表达式:由一类特殊字符以及文本字符所编写的一种模式,处理文本当中的内容 其中的一些字符不表示字符的字面含义,这些字符表示控制或者通配的功能 通配符&…

PageHelper分页失效,只能查出第一页

PageHelper分页失效&#xff0c;只能查出第一页 1. 现象2. 原因3. PageHelper工作原理 1. 现象 分页代码如下&#xff1a; int pageId Constants.ONE;boolean isHasNextPage;do {PageHelper.startPage(pageId, Constants.DEFAULT_PAGE_SIZE);List<String> projectIdLi…

python发送邮件yagmail库

yagmail库发送邮件简洁&#xff0c;代码量少 多次测试文件发送只能接收到表、文档、pdf、ppt import yagmaildef send_yagmail(sender, send_password, addressee, hostsmtp.qq.com, port465):yag yagmail.SMTP(sender, send_password, host, port)img_url https://img2.bai…

kali密码攻击之在线攻击hydra

hydra与hydra-graphical 1.介绍 Hydra是一款非常强大的暴力破解工具&#xff0c;它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具&#xff0c;主要目的是&#xff1a;展示安全研究人员从远程获取一个系统认证权限 支持以下协议爆破&#xff1…

Redis实战案例21-消息队列

1. 基于JVM的阻塞队列的局限 JVM内存限制问题&#xff0c;大量订单出现时&#xff0c;可能会超过JVM阻塞队列上限&#xff1b;阻塞队列并不能持久化&#xff0c;因为内存不能持久化&#xff0c;出现异常或者宕机之类的故障时&#xff0c;出现数据丢失&#xff1b; 所以引出消息…