宏任务、微任务

目录

何为宏任务、微任务

执行顺序

运行机制

常见的宏任务

常见的微任务


何为宏任务、微任务

事件循环:JS 会创建一个类似于 while (true) 的循环,每执行一次循环体的过程称之为Tick。每次Tick的过程就是查看是否有待处理事件,如果有则取出相关事件及回调函数放入执行栈中由主线程执行。待处理的事件会存储在一个任务队列中,也就是每次Tick会查看任务队列中是否有需要执行的任务。

主线程:JS 只有一个线程,称之为主线程。而事件循环是主线程中执行栈里的代码执行完毕之后,才开始执行的。所以,主线程中要执行的代码时间过长,会阻塞事件循环的执行,也就会阻塞异步操作的执行。只有当主线程中执行栈为空的时候(即同步代码执行完后),才会进行事件循环来观察要执行的事件回调,当事件循环检测到任务队列中有事件就取出相关回调放入执行栈中由主线程执行。

       js是单线程的,单线程意味着任务需要排队,如果前一个任务耗时长,那么就会阻塞后续任务的执行。为此js出现了同步和异步任务,这两种任务都是要在主线程执行栈中执行的,但是,异步任务会放到任务队列中进行排队执行。

       而任务队列中就分为了宏任务微任务。(说白了就是个名字而已,就是被叫做微任务的异步任务的执行优先级更高,先执行,而宏任务(同样是异步任务)的执行优先级比微任务低,得等微任务执行完才能轮到宏任务)

执行顺序

同步任务>微任务>宏任务

运行机制

  • 同步任务在主线程上执行,形成一个执行栈

  • js会将主线程执行栈中的异步任务置于任务队列排队

  • 一旦主线程执行栈同步任务执行完毕处于空闲状态时,就会将任务队列中任务入栈开始执行

常见的宏任务

setTimeout、setInterval

常见的微任务

promise中的then、async、await

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值