概念:
- JavaScript是单线程的语言
- Event Loop是javascript的执行机制
- 宏任务:包括整体代码script,setTimeout,setInterval、
- 微任务:原生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