一个头条实例
// 今日头条面试题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
