异步相关及事件循环

异步相关面试

 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 执行宏任务