js宏任务微任务输出解析

server/2024/9/22 13:48:25/

第一种情况

javascript">      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 宏任务里的正常输出

第二种情况

javascript">      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.ppmy.cn/server/37506.html

相关文章

sql优化思路

sql的优化经验 这里解释一下SQL语句的优化的原理 1.指明字段名称,可以尽量使用覆盖索引,避免回表查询,因此可以提高效率 2.字面意思,无需过多赘述。索引就是为了提高查询效率的。 3.图中两条sql直接可以使用union all 或者 uni…

跨域初识--.如何解决跨域

04 【跨域初识】 1.同源策略 同源策略(Same-Origin Policy)最早由Netscape 公司提出,是浏览器的一种安全策略同源: 协议、域名、端口号必须完全相同跨域: 违背同源策略就是跨域 2.如何解决跨域 2.1 JSONP jsonp只支持get请求不支持post请…

【busybox记录】【shell指令】tr

目录 内容来源: 【GUN】【tr】指令介绍 【busybox】【tr】指令介绍 【linux】【tr】指令介绍 使用示例: 转换字符 - 默认 转换字符 - 不翻译指定字符数组 此指令目前接触少,用得少,把精力放到其他常用指令上 常用组合指令…

CSS实现渐变色

渐变色分为线性渐变和径向渐变。 线性渐变linear-gradient(方向, 颜色1, 颜色2, … ,颜色n)径向渐变radial-gradient(颜色1 覆盖区域大小, 颜色2 覆盖区域大小, … ) 线性渐变的方向可以为: ​ 1、一个方向值时: to bottom 表示从上边到下边渐变 ​ 2、…

SEO之高级搜索指令(二)

初创企业需要建站的朋友看这篇文章,谢谢支持: 我给不会敲代码又想搭建网站的人建议 新手上云 (接上一篇。。。。) 5 、inanchor: inanchor:指令返回的结果是导入链接锚文字中包含搜索词的页面。百度不支持inanchor:。 比如在 Go…

IoTDB 入门教程 基础篇⑥——数据库SQL操作 | 数据库管理和数据读写

文章目录 一、前文二、数据库管理2.1 创建数据库2.2 查询数据库2.3 删除数据库 三、数据读写3.1 查询数据3.2 新增数据3.3 修改数据3.4 删除数据 四、参考 一、前文 IoTDB入门教程——导读 本博文主要讲述数据库管理和数据读写 二、数据库管理 2.1 创建数据库 CREATE DATABASE…

设置 kafka offset 消费者位移

文章目录 1.重设kafka消费者位移2.示例2.1 通过 offset 位置2.2 通过时间2.3 设置到最早 1.重设kafka消费者位移 维度策略含义位移Earliest把位移调整到当前最早位移处位移Latest把位移调整到当前最新位移处位移Current把位移调整到当前最新提交位移处位移Specified-Offset把位…

Linux内核之获取文件系统超级块:sget用法实例(六十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…