同步任务和异步任务,宏任务和微任务

同步任务

  • 叫做非耗时任务,指的是在主线程上排队执行的那些任务
  • 只有前一个任务执行完毕了,才能执行后一个任务

异步任务

  • 叫做耗时任务,异步任务由 javascript 委托给宿主环境进行执行的
  • 当异步任务完成后,会通知 javascript 主线程执行异步任务的回调函数
    在这里插入图片描述
    分析输出的顺序
console.log('A');

thenFs.readFile('./1.txt','utf8').then(res=>{console.log('B')})

setTimeout(()=>{
    console.log('C')
},0)

console.log('D')

分析:A和D是同步任务,会根据代码的先后执行顺序输出
C和B是异步任务,它们的回调函数会被加入到任务队列中,等同步任务执行完会依次执行异步任务(哪个异步任务先执行完哪个先输出)
在这里插入图片描述

什么是宏任务和微任务

javascript 把异步任务分为了两类
① 宏任务

  • 异步Ajax请求
  • setTimeout、setInterval
  • 文件操作
  • 其他。。。

② 微任务

  • Promise.then、.catch和.finally
  • process.nextTick
  • 其他。。。

执行顺序

先看看有没有宏任务,没有就执行结束,再看看有没有微任务,有微任务就执行所有的微任务,执行完再执行下一个宏任务,总之就是每一个宏任务执行完之后,都会检查是否存在待执行的微任务,如果有,就执行完所有的微任务,再继续执行下一个宏任务
在这里插入图片描述
面试题:判断一下执行顺序
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值