JS执行机制《粗糙版》

68 阅读1分钟

一位前端小白的成长记录过程。
这两天看了一些前端前辈的关于JS执行机制的文章,写一写自己的理解,有不对的地方还希望大家能够指正。

首先,JS是单线程的即时编译语言。
这就意味着代码是一行一行执行的。如果遇到执行时间比较长的代码,那么就会卡在这里,无法将整个代码执行完,进而导致页面无法渲染。然后我们就看到一个空白页面了,这样子的用户体验会很差。

为了解决这个问题,JS采取event loop(事件轮询)机制。简单说就是将代码分为同步任务代码和异步任务代码。
常见的异步任务:(只是常见呀)

  1. 定时器任务 settimeout setinterval
  2. AJAX请求任务
  3. promise.then的回调

当代码自上而下执行时,遇到同步任务加入到执行栈中,执行遇到异步任务会挂起到异步任务的线程中处理。主线程的任务执行完后,会到异步任务的事件队列中看有没有任务,有则拿到主线程中执行,如此反复。

上面只是最基础的最基础一个过程。先了解个大概,然后慢慢补充。