We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
理解 JavaScript 的执行机制需要先了解下面几个概念。
单线程是 JavaScript 这门语言的一大特点,未来也不会改变。在 JavaScript 中,所有的 “多线程” 都是通过单线程模拟出来的,所以尽管 HTML5 实现了 Web Worker,但是 JavaScript 仍然是单线程的。
执行栈本质就是一个栈,只是它存放的是任务。
单线程就意味着所有的任务都需要排队执行,因为主线程只有一个。任务被划分为同步任务和异步任务。你肯定有疑问,为什么任务会被划分为 “同步任务” 和 “异步任务” ?
原因其实很简单,因为如果有一个任务耗时过长,后面的所有任务都需要等待,但是像加载图片音乐,网络请求之类的占用资源大耗时也长的任务,进入主线程后,就会阻塞后面的任务。
而当我们打开一个网站时,可能更希望看到页面更快地渲染出来而不是一直卡着直到图片完全加载完成,所以任务应该有优先级,于是聪明的程序员便将任务分为两类:同步任务和异步任务。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
理解 JavaScript 的执行机制需要先了解下面几个概念。
JavaScript是单线程的
单线程是 JavaScript 这门语言的一大特点,未来也不会改变。在 JavaScript 中,所有的 “多线程” 都是通过单线程模拟出来的,所以尽管 HTML5 实现了 Web Worker,但是 JavaScript 仍然是单线程的。
执行栈
执行栈本质就是一个栈,只是它存放的是任务。
同步任务与异步任务
单线程就意味着所有的任务都需要排队执行,因为主线程只有一个。任务被划分为同步任务和异步任务。你肯定有疑问,为什么任务会被划分为 “同步任务” 和 “异步任务” ?
原因其实很简单,因为如果有一个任务耗时过长,后面的所有任务都需要等待,但是像加载图片音乐,网络请求之类的占用资源大耗时也长的任务,进入主线程后,就会阻塞后面的任务。
而当我们打开一个网站时,可能更希望看到页面更快地渲染出来而不是一直卡着直到图片完全加载完成,所以任务应该有优先级,于是聪明的程序员便将任务分为两类:同步任务和异步任务。
事件循环
The text was updated successfully, but these errors were encountered: