什么是宏任务和微任务、说说你对event Loop的理解?

在Javascript中,宏任务(macro-task)和微任务(micro-task)是异步代码执行的两种方式。当浏览器遇到异步代码时,它会将其添加到任务队列中,并等待一段时间后再执行。这里的‘一段时间’就是发生事件后的延迟时间。

  • 宏任务:宏任务包括整体代码script,setTimeout,setInterval,setImmediate(IE浏览器下才有),I/O操作,UI渲染等
  • 微任务:promise、process.nextTick(Node.js环境下)、Object.observe等。他们的响应速度较快,而且一般都是当前任务的异步操作结果。
    而事件循环(event loop)是JavaScript中的一种机制,用来负责处理程序中的事件轮询。它的工作机制如下:
  • 在执行完当前栈中所有同步代码后,从宏任务队列中取出第一个任务并执行该任务。
  • 当该任务完成后,如果其产生了其他任务(比如通过setTimeout等异步方法注册的宏任务、也有可能产生微任务 ),将会把这些任务加入到相应的任务队列中等待执行。
  • 接着按照先入先出的原则,从微任务队列中取出所有任务按顺序执行完
  • 若此期间微任务中又产生了新的微任务,则继续执行微任务,知道没有微任务为止。
  • 微任务队列为空后,开始下一个宏任务;重复上述过程,直至程序结束
    需要注意的是:“先进先出”的方式只针对当前的一个宏任务(一次循环),而不是跨越多个宏任务。例如,如果执行完当前的宏任务后,又产生了新的宏任务和微任务,那么这些新产生的任务会在下次循环中依次被执行。

总体来说,事件循环机制保证了 Javascript 的单线程特性,同时也保证了异步代码的渐进式执行,避免了阻塞程序运行的问题。通过掌握宏任务、微任务和事件循环的机制,我们可以更好地理解Javascript异步编程的本质,并写出更高效、可维护的代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值