宏任务和微任务的区别

概念1: JS是单线程执行

”JS是单线程的”指的是JS 引擎线程。

在浏览器环境中,有JS 引擎线程和渲染线程,且两个线程互斥。
Node环境中,只有JS 线程。

概念2:宿主

JS运行的环境。一般为浏览器或者Node。

概念3:执行栈

是一个存储函数调用的栈结构,遵循先进后出的原则。

宏任务和微任务

在这里插入图片描述
宏任务:script、setTimeOut、setInterval、setImmediate
微任务:promise.then,process.nextTick、Object.observe、MutationObserver

执行宏任务script,
进入script后,所有的同步任务主线程执行
所有宏任务放入宏任务执行队列
所有微任务放入微任务执行队列
先清空微任务队列,
再取一个宏任务,执行,再清空微任务队列
依次循环

console.log('start')

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

new Promise((resolve) => {
    
    
  console.log('promise')
  resolve()
})
  .then(() => {
    
    
    console.log('then1')
  })
  .then(() => {
    
    
    console.log('then2')
  })

console.log('end')

结果为:start

promise
end
then1
then2
setTimeout

猜你喜欢

转载自blog.csdn.net/qq_42526440/article/details/114750532