【JS基础】 事件循环(event loop)、微任务、宏任务

91 阅读1分钟

概念:

  1. JavaScript是单线程的语言
  2. Event Loop是javascript的执行机制
  3. 宏任务:包括整体代码script,setTimeout,setInterval、
  4. 微任务:原生Promise(有些实现的promise将then方法放到了宏任务中)、 MutationObserver

我们来看一个例子:

console.log('start')
setTimeout(() => {
  console.log('setTimeout')
}, 0)
setTimeout(() => {
  console.log('setTimeout1')
}, 2000)
new Promise((resolve, reject) => {
  console.log('p1')
  resolve('')
}).then(val => {
  console.log('p11')
})
new Promise((resolve, reject) => {
  console.log('p2')
  resolve('')
}).then(val => {
  console.log('p21')
})

打印顺序是什么?正确答案是start、p1、p2、end、p11、p21、setTimeout0、setTimeout1