浅谈JS运行机制

111 阅读1分钟

1. JS是为什么是单线程?

 什么是单线程,单线程就是同一个时间只能做一件事,JS从诞生开始,就是单线程,也是这门语言的核心特性。单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。于是,所有的任务可以分为两种,同步任务和异步任务。

2. JS中的异步操作有那些?

  • setTimeOut
  • setInterval
  • ajax
  • promise
  • I/O

3. 同步任务和异步任务

  • 同步任务:在主线程上排队执行的任务,只有前一个任务执行完成,才能只能后一个任务

  • 异步任务:不进入主线程,而是进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行

  • 异步执行的运行机制:

  • 所有的同步任务都在主线程上执行,形成一个执行栈。

  • 主线程之外,还有一个任务队列。只要异步任务有了运行结果,就在任务队列中设置一个事件

  • 一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,看还有那些事件,那些对应的异步任务。于是结束等待状态,进入执行栈,开始执行

  • 主线程不断重复以上流程。