关于同步任务 异步任务 宏任务 微任务

同步/异步

js的代码都是单线程执行的,因此一些浏览器事件和请求事件就需异步任务来实现

一般来讲,所有回调函数都是异步任务

js在执行代码程序时,判断是 同步/异步 函数,若是同步任务会在主线程开始执行

而异步任务则会走事件表,并将回调函数注册进事件队列,

在主线程执行完毕之后才会返回事件队列里检查,执行事件队列的函数

这里有一点要注意,主线程若没有执行完毕,那么事件队列是不会触发的,就比如你定义一个0毫秒的定时器,若是主线程的执行时间超出100毫秒,那么定时器也会在100毫秒后执行

 关于同步任务 异步任务 宏任务 微任务

 

 

 关于同步任务 异步任务 宏任务 微任务

 

 

 宏任务/微任务

 

宏任务/微任务 是另外一种更为细致的分类

常见宏任务:script setTimeout setInterval

常见微任务:Promise process.nextTick

 

宏任务和微任务有分别两条队列

执行流程是这样的

关于同步任务 异步任务 宏任务 微任务

 

 

要注意的事script就是第一个宏任务,在遇到宏任务时,会将他放入宏任务队列,微任务放入微任务队列,

当前宏任务的内容执行完毕后,会检索微任务列表,将微任务列表的内容全部执行完,再开始执行最新的宏任务,

要注意的是,宏任务是有优先级的,属于上一次宏任务发现的宏任务的优先级最高,这意味着你就算你在某一次宏任务里发现新的宏任务,

但是只要与当前宏任务同级的宏任务还有,就只会优先执行同级的

console.log(1)
setTimeout(()=>{
   console.log(2)
   setTimeout(()=>{
       console.log(5)
   })
})
new Promise((resolve)=>{
    resolve()
    console.log(3)
}).then(res=>{
    console.log(4)
})
setTimeout(()=>{
    console.log(6)
})
//1
//3
//4
//2
//6
//5

 

关于同步任务 异步任务 宏任务 微任务

上一篇:Vue 3 + vite 2.0 动态图片地址


下一篇:群体结构分析admixture