JS宏队列微队列

javascript在执行时,遇到异步执行的方法,不会等异步方法返回结果再继续向下执行,而是先将异步方法放到一个队列中,然后继续执行,最后主线程空闲时,再按照顺序执行队列里的异步方法,叫做事件轮回。队列又分为宏队列和微队列,将宏任务放在宏队列,微任务放在微队列,在执行时遵循先全局方法,后微任务,最后宏任务的顺序。
宏任务:setTimeout, setInterval, setImmediate, I/O, UI rendering.
微任务:process.nextTick, Promise.then, Object.observer, MutationObserver.

console.log('1->全局队列script');
setTimeout(() => {
      console.log('2->timeout1');
      new Promise(resolve=>{
          console.log('3->timeout1-promise');
          resolve()
      }).then(()=>{
          console.log('4-timeout1-then');
      })
  }, 2000);

new Promise(resolve=>{
    console.log('5->promise1');
    resolve()
}).then(()=>{
    console.log('6->then=>1')
})

结果为:
1->全局队列script
5->promise1
6->then=>1
2->timeout1
3->timeout1-promise
4-timeout1-then

先执行1全局队列,将settimeout内的放到宏队列中,执行5全局队列,将then中的6放到微队列中,主程序空闲,执行微任务6,然后执行宏任务settimeout(先执行2,3,将4放入微任务中,2,3执行完后执行4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值