事件循环

任务分为同步阻塞任务 同步不阻塞任务 异步阻塞任务 异步不阻塞任务

      console.log(4);

      setTimeout(() => {

        console.log(1);

      }, 0); //异步宏任务

      setTimeout(() => {

        console.log(2);

      }, 0);

      var p1 = new Promise((n1, n2) => {

        n1(100);

      });

      p1.then(() => {

        console.log(3);

      }); //异步微任务

      console.log(5);

      //4 5 3 1 2

    异步任务的队列优先级:异步宏任务先执行 然后执行异步微任务 这里出现情况是因为两个任务不在一次事件循环中(任务开启后 内部又产生了新的任务)

      

      事件循环过程:

        先执行第一轮宏任务(脚本)中的代码:同步~微任务~下一轮宏任务中的代码

        宏任务中:同步~微任务~下轮排队的宏任务

        下轮排队的宏任务中:执行同步~执行微任务~遇到宏任务继续排队~执行下轮排队的宏任务

        下轮排队的宏任务中:执行同步~执行微任务~遇到宏任务继续排队~执行下轮排队的宏任务

        循环起来了~这就是事件循环。

        总结:

        1.宏任务先运行微任务后运行

        2.then是微任务﹐全局脚本和计时器是宏任务


   

</script>

    <script src="">

      //事件循环练习题

      setTimeout(() => {

        console.log(0);

      });

      new Promise((resolve) => {

        console.log(1);

        setTimeout(() => {

          resolve();

          var p1 = new Promise((n1, n2) => {

            n1(20);

          });

          p1.then(() => console.log(2));

          console.log(3);

        });

        new Promise((n1, n2) => {

          n1(20);

        }).then(() => console.log(4));

      }).then(() => {

        console.log(5);

        var p2 = new Promise((n1, n2) => {

          n1(20);

        });

        p2.then(() => console.log(8));

        setTimeout(() => console.log(6));

      });

      console.log(7);



      //1 7 4 0 3 5 2 8 6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思考猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值