JavaScript事件执行eventLoop讲述

js是单线程的,所以执行任务采用同步,异步的方式进行,执行过程是如下。

也就是同步任务全部执行完成,再执行异步任务。

异步任务里面又分为宏任务和微任务。

执行顺序如下图

也就是宏任务多次执行,微任务一次执行。宏任务先执行一个,微任务全部执行,再执行剩余的宏任务

宏任务中执行优先级

微任务中优先级

再次总结就是主任务执行后,执行微任务,再执行setTimeout,setInterval,setImmediate

setTimeout(func(){},0),意思是同步任务执行完成后,主线程栈空后,然后再执行,但是主线程一直为空,由于机制问题,还是最小为4ms。

代码示例1:

console.log("宏任务优先级最高执行")
     setTimeout(() => {
          console.log("settimeout")
      }, 10);
      setImmediate(()=>{
          console.log("setTmmediate")
      })
      let promise=new Promise((resolve,reject)=>{
          console.log("promise中1执行");
          resolve()
      })
      promise.then(()=>{
          console.log("promise中2执行")
      })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值