如何理解 JS 的异步

117 阅读1分钟

参考答案

  • JavaScript 是单线程语言,它运行在浏览器的主线程上,而渲染主线程只有一个。
  • 渲染主线程承担着、解析HTML、解析CSS、构建渲染树、页面布局的计算、绘制页面、执行 js 等。
  • 如果使用同步的方式,就极有可能导致渲染主线程产生阻塞、从导致消息队列中的很多其他任务无法执行。这样一来,一方面导致繁忙的主线程白白的消耗时间,另一方面导致页面并无法及时的更新,给用户造成卡死的现象。
  • 所以浏览器采用异步的方式来避免,具体做法是当某些任务发生时,比如计时器、网络、事件监听,渲染主线程将任务交给其他线程去处理,自身立即结束任务的执行,转而执行后续代码。当其他线程完成时,将事先传递的回调函数包装成任务,加入到消息队列的末尾排队。等待主线程调度执行。在这种异步模式下,浏览器永不阻塞,从而最大限度的保证了单线程的流畅运行。