js执行机制

js是单线程语言 任务需要排队执行经常会被卡主所以将任务分为同步任务和异步任务
同步任务:不需要等待的任务 如 let a = 1
异步任务:需要等待一会的任务 比如 setTimeOut,网络请求等
promise.resolve().then 发起的请求已经完成,但是很久不执行then
有的任务可以连贯执行有的任务不能连贯执行
异步任务分为了宏任务和微任务
宏任务:不需要立即连贯执行
script setTimeOut、setInterval、setImmediate
微任务:需要立即连贯执行 (需要等下一个宏任务执行前完成)
new Promise().then, process.nextTick

他们放在不同的EventTable中
宏任务放在 宏任务EventTable中,然后注册回调到Event Queue中等待执行
微任务放在 微任务EventTable中,然后注册回调到事件队列中等待执行

检查任务队列,先看微任务,没有微任务再看宏任务,有事件回调放入主线程执行

一次任务执行完成后 js会检查任务队列,先看有没有微任务,如果有的话就把微任务放到主线程中执行,如果没有微任务就再看有没有宏任务,如果有宏任务的话就把宏任务的事件回调,放到主线程中等待执行,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值