JavaScript异步执行原理和回调机制究竟是如何巧妙交织成一个高效的长尾链的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1671个文字,预计阅读时间需要7分钟。
一、JS异步执行原理+我们知道JavaScript是单线程的,而浏览器是多线程的。单线程执行任务需要排队,如果有一个任务需要很长时间执行(如ajax请求),会直接导致浏览器阻塞,影响用户体验。因此,JavaScript采用异步执行来处理长时间任务,提高浏览器性能。
一、JS异步的执行原理
我们知道JavaScript是单线程的,而浏览器是多线程的。单线程执行任务需要一个个排队进行,假如一个任务需要很长时间执行(像ajax需要较长时间),会直接导致无响应,后面的任务一直在等待执行。这时候就需要用到异步。
想了解异步,首先我们要知道浏览器有最基本的三个常驻线程: JS引擎线程,事件触发线程,GUI渲染线程。
其中JS引擎线程和事件触发线程共同构成了一种事件循环机制,而GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新保存在一个队列中,当JS引擎空闲时,立即被执行。
我们从它的事件循环机制解析:
JS引擎线程中分为同步和异步任务:
1.同步任务全部通过主线程执行,形成执行栈。
本文共计1671个文字,预计阅读时间需要7分钟。
一、JS异步执行原理+我们知道JavaScript是单线程的,而浏览器是多线程的。单线程执行任务需要排队,如果有一个任务需要很长时间执行(如ajax请求),会直接导致浏览器阻塞,影响用户体验。因此,JavaScript采用异步执行来处理长时间任务,提高浏览器性能。
一、JS异步的执行原理
我们知道JavaScript是单线程的,而浏览器是多线程的。单线程执行任务需要一个个排队进行,假如一个任务需要很长时间执行(像ajax需要较长时间),会直接导致无响应,后面的任务一直在等待执行。这时候就需要用到异步。
想了解异步,首先我们要知道浏览器有最基本的三个常驻线程: JS引擎线程,事件触发线程,GUI渲染线程。
其中JS引擎线程和事件触发线程共同构成了一种事件循环机制,而GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新保存在一个队列中,当JS引擎空闲时,立即被执行。
我们从它的事件循环机制解析:
JS引擎线程中分为同步和异步任务:
1.同步任务全部通过主线程执行,形成执行栈。

