栈:后进先出 同步任务
队列:先进先出 异步任务
同步任务 异步任务:执行宏任务时检测到微任务队列不为空时会去执行微任务 然后执行宏任务
代码示例:
console.log('script start')
async function async1() {
await async2()
console.log('async1 end')
}
async function async2() {
console.log('async2 end')
}
async1()
setTimeout(function() {
console.log('setTimeout')
}, 0)
new Promise(resolve => {
console.log('Promise')
resolve()
})
.then(function() {
console.log('promise1')
})
.then(function() {
console.log('promise2')
})
console.log('script end')
输出:script start, async2 end,Promise,script end,async1 end,promise1,promise2,setTimeout