异步相关及事件循环

Posted wangtingnoblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步相关及事件循环相关的知识,希望对你有一定的参考价值。

异步相关

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

以上是关于异步相关及事件循环的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 工作原理之四-事件循环及异步编程的出现和 5 种更好的 async/await 编程方式(译)

一文搞懂Node.js以及浏览器中的事件循环机制

JS-线程事件循环任务队列

JS-线程事件循环任务队列

Flutter学习-Dart异步

如何使用事件侦听器来加载动画片段的循环