event.loop主线程、宏任务、微任务的执行流程

  1. 主线程:同步代码
  2. 微任务:promise的then和catch方法(数据请求)
  3. 宏任务:计时器、延时器等异步代码

主线程执行完毕 -> 微任务 -> (判断是否还有新的微任务,有的话加入到后面) ->宏任务 -> 微任务 -> (判断是否还有新的微任务,有的话加入到后面)-> 后续一直循环查看是否存在宏任务和微任务

        console.log("我是主线程1");
        let pm = new Promise(function (resolve, reject) {
            setTimeout(function () {
                resolve("传入参数到微任务1")
                console.log("我是宏任务1");
            }, 1000);
        });
        let pm2 = new Promise(function (resolve, reject) {
            setTimeout(function () {
                resolve("传入参数到微任务2")
                console.log("我是宏任务2");
            }, 1000);
        });
        let pm3 = new Promise(function (resolve, reject) {
            console.log("我是主线程4");
            resolve("我是微任务3")
        });
        console.log("我是主线程2");
        pm.then(function (data) {
            console.log(data);
            return pm;
        })
        pm2.then(function (data) {
            console.log(data);
        });
        pm3.then(function (data) {
            console.log(data);
        });
        console.log("我是主线程3");

在这里插入图片描述
可以看到首先执行了4个主线程 -> 在pm3中发现了一个微任务3执行后 -> 微任务清空 -> 开始执行宏任务 -> 执行了第一个延时器(第一个宏任务)后 -> 遇见了此延时器中的微任务1 -> 并执行此微任务,微任务清空 -> 继续向下寻找宏任务 -> 然后遇见第二个宏任务 -> 执行后 -> 遇见在其中的微任务2 -> 清空微任务。执行完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值