一个头条实例
// 今日头条面试题
async function async1() {
console.log('async1 start')
await async2()
console.log('async1 end')
}
async function async2() {
console.log('async2')
}
console.log('script start')
setTimeout(function () {
console.log('settimeout')
})
async1()
new Promise(function (resolve) {
console.log('promise1')
resolve()
}).then(function () {
console.log('promise2')
})
console.log('script end')
基础知识
事件循环(Event Loop)、宏任务(Marco Task)与微任务(Misco Task)
解题思路
三个三个队列:A: 当前执行,B: 微任务,C: 宏任务
console.log(‘script start’) => A
setTimeout => C
console.log(‘async1 start’) => A
console.log(‘async2’) => A
console.log(‘async1 end’) => B
console.log(‘promise1’) => A
console.log(‘promise2’) => B
console.log(‘script end’) => A
分别输出ABC
script start
async1 start
async2
promise1
script end
async1 end
promise2
setTimeout