异步相关及事件循环
异步相关
1 // 今日头条面试题 2 async function async1() { 3 console.log('async1 start') 4 await async2() 5 console.log('async1 end') 6 } 7 async function async2() { 8 console.log('async2') 9 } 10 console.log('script start') 11 setTimeout(function () { 12 console.log('settimeout') 13 }) 14 async1() 15 new Promise(function (resolve) { 16 console.log('promise1') 17 resolve() 18 }).then(function () { 19 console.log('promise2') 20 }) 21 console.log('script end')
- script start 同步代码
- async1 start 同步代码
- async2 Promise是立即执行的,使用会先执行,这时console.log('async1 end')进入微任务中
- promise1 Promise是立即执行的 这时console.log('promise2')进入微任务中
- script end 同步代码
- async1 end 先执行微任务
- promise2 先执行微任务
- settimeout 执行宏任务