首页 > 其他分享 >异步代码微任务宏任务案例

异步代码微任务宏任务案例

时间:2023-08-17 21:13:32浏览次数:38  
标签:异步 resolve console log 案例 任务 setTimeout

案例一

案例01
process.nextTick(()=>{console.log("111");})

const promise = new Promise(resolve=>{
    console.log("222");
    resolve()
})

setTimeout(()=>{console.log("333");},100)

promise.then(()=>{console.log("444");})


/*
    执行结果 =>
     2 同步代码
     1 微任务老大
     4 微任务
     3 宏任务
 */

案例二

案例02
Promise.resolve().then(()=>{console.log("111");})

process.nextTick(()=>{
    console.log("222");
})

setTimeout(()=>{
    console.log("333");
},0)

console.log("444");

/*
    4 同步代码
    2 微任务老大
    1 微任务
    3 宏任务
 */

案例三

案例03
console.log("111");

setTimeout(()=>{
    console.log("222");
},0)

new Promise((resolve)=>{
    console.log("333");
    resolve()
})
.then(()=>{
    console.log("444");
})
.then(()=>{
    console.log("555");
})

console.log("666");

/*
    1 同步代码
    3 同步代码
    6 同步代码
    4 微任务
    5 微任务
    2 宏任务
 */

案例四

案例04
process.nextTick(()=>{
    console.log("111");
})

setTimeout(()=>{
    console.log("222");
},0)

const promise = Promise.resolve()
promise.then(()=>{
    console.log("333");
    process.nextTick(()=>{
        console.log("444");
    })
    setTimeout(()=>{
        console.log("555");
    },0)
})
.catch(()=>{
    console.log("666");
})


/*
    1 微任务老大
    3 微任务
    4 微任务中的微任务老大
    2 宏任务
    5 微任务中的宏任务
 */

案例五

案例05
process.nextTick(()=>{
    console.log("111");
})

setTimeout(()=>{
    console.log("222");
},0)

const promise = Promise.resolve()
promise.then(()=>{
    console.log("333");
    process.nextTick(()=>{
        console.log("444");
    })
    setTimeout(()=>{
        console.log("555");
    },0)
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            reject(111)
        },0)
    })
})
.catch(()=>{
    // console.log(res);
    console.log("666");
})


/*
    1 微任务老大
    3 微任务
    4 微任务中微任务老大
    2 宏任务
    5 微任务中的宏任务
    6 微任务中的宏任务
 */

案例六

案例06
const promise = new Promise((resolve,reject)=>{
    console.log(111);
    setTimeout(() => {
        console.log(222);
        resolve("success")
        console.log(333);
    }, 0);
    console.log(444);
})
promise.then((res)=>{
    console.log(555);
})
console.log(666);

/*
    1 同步代码
    4 同步代码
    6 同步代码
    2 宏任务中的同步代码
    3 宏任务中的同步代码
    5 宏任务中的微任务

 */

标签:异步,resolve,console,log,案例,任务,setTimeout
From: https://www.cnblogs.com/bingMIN/p/17638851.html

相关文章

  • Android 12 Tablet 任务栏及虚拟按键靠右问题
     其中左侧为 TASKBAR 右侧为 NavigationBarLauncher 中TaskBar的显示控制在 packages\apps\Launcher3\src\com\android\launcher3\config\FeatureFlags.javapublicstaticfinalBooleanFlagENABLE_TASKBAR=getDebugFlag("ENABLE_TASKBAR",false,&qu......
  • 卷轴模式开发卷轴任务驱动逻辑案例分析
    卷轴模式从趣步模式开始到现在,不断有新的项目出来,如果说2023年商业模式项目做个排行,我想有一半的项目是卷轴模式的项目,它的特点也很明显,互联网生意讲究免费,羊毛出在猪身上狗来买单的逻辑.免费,让所有人都能参与进来玩,免费,让系统本身具备分销裂变的属性,可以快速地积累用户数据资源。......
  • 在C++中实现多线程异步TCP消息发送
    本文主要解释了在C++中如何实现一个多线程,异步发送TCP消息的系统。我们将会用到C++的标准库和Boost.Asio库。基础知识TCP(TransmissionControlProtocol):是一种面向连接的、可靠的、基于字节流的通信协议。它在两个网络节点之间创建一个稳定的连接,以便可以交换字节流。多线程编程:......
  • Linux进程和计划任务管理
    正在工作的程序叫做进程父进程和子进程进程之间可能存在父子进程关系,父进程是对子进程进行管理,子进程是对客户端进行相应,进程在执行的时候往往是以不同用户的身份进行执行,主进程可能是以管理员的身份,子进程可能以普通用户的身份。#####子进程子进程为了安全一般使用普通用户(称为程......
  • 安科瑞变电所运维系统在电力系统的应用及案例分析 
    未晓妃安科瑞电气股份有限公司上海嘉定201801摘要:电力系统在电力企业中具有应用价值,随着电力系统的规模扩大,电力设备的应用量增加,考虑到电力系统的当前运行情况以及不断增加的电能*,相关工作单位需要加强变电运维技术的应用,保障变电运效益。为此,既有的变电运维系统应当被改进。现......
  • C# Microsoft.Win32.TaskScheduler方式创建任务计划程序报错: System.ArgumentExceptio
    使用Microsoft.Win32.TaskScheduler创建任务计划程序可参考本人之前的一篇文章:https://www.cnblogs.com/log9527blog/p/17329755.html最新发现个别账户使用Microsoft.Win32.TaskScheduler创建任务计划程序报错:System.ArgumentException:(12,21):UserId:Account一种情况是账户......
  • 户外专家 REI EDI 项目案例
    REI是一家专业户外和运动产品品牌,成立于1938年,总部位于西雅图。REI的网站同时在线陈列超过40000种商品。涉及的产品类别从登山、露营、健身、徒步旅行、骑自行车、划船运动、到滑雪和旅游。REI的供应商来自世界各地,包括美国本土和国际市场。时下REI网站上除了出售自有品牌产品以......
  • 分布式可视化 DAG 任务调度系统 Taier 的整体流程分析
    Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关心任务错综复杂的依赖关系与底层的大数据平台的架构实现,将工作的重心更多地聚焦在业务之中。本......
  • Unity 编辑器资源导入处理函数 OnPreprocessTexture:深入解析与实用案例
    Unity编辑器资源导入处理函数OnPreprocessTexture用法点击封面跳转下载页面简介在Unity中,我们可以使用编辑器资源导入处理函数(OnPreprocessTexture)来自定义处理纹理资源的导入过程。这个函数是继承自AssetPostprocessor类的,通过重写这个函数,我们可以在纹理资源导入之前......
  • mysql-综合案例,练习数据表查询操作
    1.环境搭建创建数据库test1createdatabaseifnotexiststest1; 选择test1数据库创建两张表dept(部门表)和employee(员工表)createtableifnotexistsdept(d_nointprimarykeyauto_incrementcomment"部门编号(自增长主键)",d_namevarchar(10)comment"部......