浅谈javaScript中的宏任务与微任务

本文深入探讨JavaScript中的同步任务与异步任务,特别是宏任务和微任务的执行顺序。通过代码示例解释了Promise和setTimeout在任务队列中的处理方式,强调微任务总是在宏任务之前执行,且同步任务优先于异步任务。
摘要由CSDN通过智能技术生成


理解任务队列

同步任务

同步任务即主线程。同一时间只能做一件事,除此之外不能做其它的事情。
主线程中的任务做完才会去其它的任务队列(异步任务队列)里抓任务来做。

任务队列,我们拆分词语,可以分成任务队列两个词语。

  • 任务:js中运行时真正执行的计算,需要待办的事项
  • 队列:存储任务的数据结构是队列的形式(First Input First Output,FIFO

任务队列就好比去医院排队的过程:

进入队列 执行任务 移除任务 执行完毕
排队 挂号 离开排队的队伍 就诊
  • 先排队的先挂号,后排队的后挂号
  • 先进入任务队列的先执行,后进入任务队列的后执行

这便是只存在同步任务的情况。

js就是单线程语言,js的代码若不进行特殊处理,其执行顺序一般按编写、调用的顺序执行。
.
.

异步任务

宏观上的执行顺序

比如秃鹫这类食腐动物,它们只在猎物死亡后才会去进食,在此之前,它们会静静等待其它的捕食者先进食。

即:

  • 同步任务优先于异步任务 // 异步任务在同步任务执行之后执行

种类
异步任务在js中大致为两种:

  • 宏任务
  • 微任务

既然种类不止一个,那么必然会有执行的优先级问题。
我们拿大人与小孩举例子,将吃饭看作为任务:

</
大人吃饭 小孩吃饭
宏任务 微任务
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值