js宏任务微任务输出解析

news2024/11/26 21:55:03

第一种情况

      setTimeout(function () {
        console.log('setTimeout 1') //11 宏任务
        new Promise(function (resolve) {
          console.log('promise 1') //12 同步函数
          resolve()
        }).then(function () {
          console.log('promise then') //13 微任务
        })
      })
      async function async1() {
        console.log('async1 start') //2 函数调用
        await async2()
        console.log('async1 end') //7 等待async2执行完成、宏任务里的所有同步函数完成和正常输出完成后,再次获得执行机会
        await async3()
      }

      async function async2() {
        console.log('async2') //3 函数调用
      }

      async function async3() {
        console.log('async3') //8 函数调用
      }

      console.log('eventLoop')  //1  宏任务
      async1()
      new Promise(function (resolve) {
        console.log('promise 2') //4 遇到async2异步函数,处于等待状态,执行promise里的同步函数
        resolve()
      }).then(function () {
        console.log('promise2 then') //9 执行这个微任务
      })

      new Promise(function (resolve) {
        console.log('promise 4') //5 执行promise里的同步函数
        resolve()
      }).then(function () {
        console.log('promise4 then') //10 按照顺序,执行这个微任务
      })

      console.log('eventLoop end') //6 宏任务里的正常输出

第二种情况

      const init = async () => {
        setTimeout(function () {
          console.log('setTimeout 1') //11 宏任务
          new Promise(function (resolve) {
            console.log('promise 1') //12 同步函数
            resolve()
          }).then(function () {
            console.log('promise then') //13 微任务
          })
        })
        async function async1() {
          console.log('async1 start') //2 函数调用
          await async2()
          console.log('async1 end') //4 等待async2执行完成
          await async3()
        }

        async function async2() {
          console.log('async2') //3 函数调用
        }

        async function async3() {
          console.log('async3') //5 函数调用
        }

        console.log('eventLoop') //1  宏任务
        await async1() // 异步函数async1全部执行完成后才会继续往下走
        new Promise(function (resolve) {
          console.log('promise 2') //6 执行promise里的同步函数
          resolve()
        }).then(function () {
          console.log('promise2 then') //9 执行这个微任务
        })

        new Promise(function (resolve) {
          console.log('promise 4') //7 执行promise里的同步函数
          resolve()
        }).then(function () {
          console.log('promise4 then') //10 按照顺序,执行这个微任务
        })

        console.log('eventLoop end') //8 宏任务里的正常输出
      }
      init()

人工智能学习网站

https://chat.xutongbao.top

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

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

相关文章

AI模型:windows本地运行下载安装ollama运行Google CodeGemma可离线运行数据模型【自留记录】

AI模型:windows本地运行下载安装ollama运行Google CodeGemma可离线运行数据模型【自留记录】 CodeGemma 没法直接运行,需要中间软件。下载安装ollama后,使用ollama运行CodeGemma。 类似 前端本地需要安装 node.js 才可能跑vue、react项目 1…

华为:三层交换机与路由器连通上网实验

三层交换机是一种网络交换机,可以实现基于IP地址的高效数据转发和路由功能,通常用于大型企业、数据中心和校园网络等场景。此外,三层交换机还支持多种路由协议(如OSPF、BGP等),以实现更为复杂的网络拓扑结构…

Java数据结构---链表

目录 链表的基本概念 LinkedList ArrayList和LinkedList的区别 链表的基本概念 当在ArrayList任意位置插入或删除元素时,就需要将后续元素整体往前或者整体往后搬移,时间复杂度O(n),效率比较低,因此Arra…

【计算机科学速成课】笔记三

文章目录 17.集成电路真空管时代晶体管时代集成电路时代印刷电路板时代光刻时代 17.集成电路 Over the past six episodes, we delved into software, 过去 6 集我们聊了软件 \N 从早期编程方式到现代软件工程 from early programming efforts to modern software engineerin…

每天五分钟计算机视觉:通过交并比判断对象检测算法的性能

本文重点 在对象检测领域,交并比(Intersection over Union,简称IoU)是衡量算法性能的重要指标之一。它不仅直观地反映了预测框与真实框之间的重叠程度,还是判断算法是否“运行良好”的关键依据。 那个定位是好的? 对象检测任务中,我们希望不仅检测到对象,同时我们还希…

分析错误ValueError: could not determine the shape of object type ‘Series‘

这个错误提示 ValueError: could not determine the shape of object type Series 通常发生在尝试将 pandas 的 Series 直接转换为 PyTorch 的 tensor 时,尤其是当 Series 的数据类型不明确或者包含非数值类型的数据时。为了修正这个问题,确保在转换之前…

每日两题 / 138. 随机链表的复制 148. 排序链表(LeetCode热题100)

138. 随机链表的复制 - 力扣(LeetCode) 用哈希表记录原链表中的节点是否被复制过 遍历原链表并通过哈希表维护新链表 /* // Definition for a Node. class Node { public:int val;Node* next;Node* random;Node(int _val) {val _val;next NULL;rand…

反汇编一个ARM64的机器码

文章目录 使用objdump直接阅读ARM64手册使用反汇编网站 有下面一个机器码:0x929ffee9,如何翻译成汇编呢? 下面介绍几种做法: 使用objdump 将这个机器码写到文件中,然后使用objdump去反汇编 创建一个二进制文件 dd…

特斯拉擎天柱已经进厂拣电池了,其他“机器打工人”赶得上吗? | 最新快讯

文陈斯达 编辑李然 5 月 6 日消息,特斯拉放出了他们的人形机器人——擎天柱(Optimus)的最新演示视频。 特斯拉的工厂中,擎天柱机器人经过数据训练,可以轻巧自由地拿取电池,放进电池槽中排列整齐。 来源&…

error: pathspec ‘XXX‘ did not match any file(s) known to git

使用vscode,在本地开发切换分支时,报以下错误: error: pathspec XXX did not match any file(s) known to git 该问题是由于没有对应分支的原因。 首先使用一下命令,查看本地及远程的所有分支。 git branch -a 若没有对应的分…

【练习2】

1.汽水瓶 ps:注意涉及多个输入&#xff0c;我就说怎么老不对&#xff0c;无语~ #include <cmath> #include <iostream> using namespace std;int main() {int n;int num,flag,kp,temp;while (cin>>n) {flag1;num0;temp0;kpn;while (flag1) {if(kp<2){if(…

FPGA学习笔记(3)——正点原子ZYNQ7000简介

1 ZYNQ-7000简介 ZYNQ 是由两个主要部分组成的&#xff1a;一个由双核 ARM Cortex-A9 为核心构成的处理系统&#xff08;PS&#xff0c;Processing System&#xff09;&#xff0c;和一个等价于一片 FPGA 的可编程逻辑&#xff08;PL&#xff0c;Programmable Logic&#xff0…

数据结构(c):队列

目录 &#x1f37a;0.前言 1.什么是队列 2. 队列的实现 2.1定义队列节点 2.2定义队列 2.3队尾入队列 2.4判断队列是否为空 2.5队头出队列 2.6 队列首元素 2.7队尾元素 2.8队列内的元素个数 2.9销毁队列 3.试运行 &#x1f48e;4.结束语 &#x1f37a;0.前言 言C之…

HTML_CSS学习:尚硅谷——尚品汇

一、index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>荣耀</title> <!-- 引入页签图标--><link rel"shortcut icon" href"./HONOR%20.ico" type&qu…

LeetCode:滑动窗口最大值

文章收录于LeetCode专栏 LeetCode地址 滑动窗口最大值 题目 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。   返回 滑动窗口中的最大值 。   示例 1…

编程语言QT、C++、C#、Matlab、SQL Server开发日志总结

目录 引言 正文 1、Qt连接SQL server数据库 2、C#使用chart绘制实时折线图&#xff0c;波形 3、ORACLEXE数据库 4、QT通过ODBC驱动连接Oracle数据库 5、Microsoft SQL Server 2014 安装图解 6、SQL Server 2014应用 7、C/C​​​​​​​ 8、QT…

【Fastadmin】后台角色组权限问题(multi,开关switch,控制器新增方法)

1.列表开关类型的权限 如图&#xff1a; 此类开关请求的方法为multi 开关在点击的时候默认是只允许修改数据库的status字段的&#xff0c;如果我们开关不是status字段&#xff0c;我们需要在服务端对应的控制器中定义protected $multiFields"id,name,swith";&#x…

使用FastGPT+OneAPI在本地使用Llama3

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&#xff01;他的重要特点就是工作流编排。 工作流编排&#xff1a;基于 Flow 模块的工作…

智慧之巅:大数据与算力中心的融合演进

智慧之巅&#xff1a;大数据与算力中心的融合演进 1 引言 在这个数据驱动的时代&#xff0c;我们站在了一个前所未有的历史节点上。大数据和算力中心&#xff0c;这两个曾经各自为政的领域&#xff0c;如今正以一种前所未有的方式交织在一起&#xff0c;共同推动着数字经济的蓬…

PY32MD310单片机介绍,非常适合做三相/单相 BLDC/PMSM主控

PY32MD310 单片机采用了高性能的 32 位 ARM Cortex-M0 内核&#xff0c;嵌入高达 64 Kbytes flash 和 8 Kbytes SRAM 存储器&#xff0c;最高工作频率 48 MHz。芯片内置多功能三相 PN 型半桥式栅极驱动器&#xff0c;片内集成多路 I2C、SPI、USART 等通讯外设&#xff0c;1 路 …