js代码的执行都是有顺序结构的,先执行同步任务在执行异步任务;
而异步任务又分为宏任务和微任务;
宏任务:setTimeout setInterval I/O script
微任务:promise.then() process.nextTick
例如以下代码:
setTimeout(_ => console.log(4))
new Promise(resolve => {
resolve()
console.log(1)
}).then(_ => {
console.log(3)
Promise.resolve().then(_ => {
console.log('5')
}).then(_ => {
Promise.resolve().then(_ => {
console.log('6')
})
})
})
console.log(2)
他打印的是1--2--3--5--6--4
解析下:在这段代码中setTimeout是宏任务,promise.then属于微任务
所以他会先打印同步的1--2--然后执行异步任务;先执行微任务3--5--6--,然后执行宏任务4