Skip to content

如何理解 JS 的异步?

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