如何深入掌握JavaScript异步编程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5218个文字,预计阅读时间需要21分钟。
JavaScript 是一门单线程语言,在测试过程中常遇到输出结果的问题,考量的重点是掌握异步编程。例如,被问到异步编程时,脑海中的第一反应往往是 Ajax 或 setTimeout...
一直以来都知道JavaScript是一门单线程语言,在笔试过程中不断的遇到一些输出结果的问题,考量的是对异步编程掌握情况。一般被问到异步的时候脑子里第一反应就是Ajax,setTimseout...这些东西。在平时做项目过程中,基本大多数操作都是异步的。JavaScript异步都是通过回调形式完成的,开发过程中一直在处理回调,可能不知不觉中自己就已经处在回调地狱中。
浏览器线程
在开始之前简单的说一下浏览器的线程,对浏览器的作业有个基础的认识。之前说过JavaScript是单线程作业,但是并不代表浏览器就是单线程的。
在JavaScript引擎中负责解析和执行JavaScript代码的线程只有一个。但是除了这个主进程以外,还有其他很多辅助线程。那么诸如onclick回调,setTimeout,Ajax这些都是怎么实现的呢?即浏览器搞了几个其他线程去辅助JavaScript线程的运行。
浏览器有很多线程,例如:
1.GUI渲染线程 - GUI渲染线程处于挂起状态的,也就是冻结状态
2.JavaScript引擎线程 - 用于解析JavaScript代码
3.定时器触发线程 - 浏览器定时计数器并不是 js引擎计数
4.浏览器事件线程 - 用于解析BOM渲染等工作
5.http线程 - 主要负责数据请求
6.EventLoop轮询处理线程 - 事件被触发时该线程会把事件添加到待处理队列的队尾
7.等等等
从上面来看可以得出,浏览器其实也做了很多事情,远远的没有想象中的那么简单,上面这些线程中GUI渲染线程,JavaScript引擎线程,浏览器事件线程是浏览器的常驻线程。
当浏览器开始解析代码的时候,会根据代码去分配给不同的辅助线程去作业。
本文共计5218个文字,预计阅读时间需要21分钟。
JavaScript 是一门单线程语言,在测试过程中常遇到输出结果的问题,考量的重点是掌握异步编程。例如,被问到异步编程时,脑海中的第一反应往往是 Ajax 或 setTimeout...
一直以来都知道JavaScript是一门单线程语言,在笔试过程中不断的遇到一些输出结果的问题,考量的是对异步编程掌握情况。一般被问到异步的时候脑子里第一反应就是Ajax,setTimseout...这些东西。在平时做项目过程中,基本大多数操作都是异步的。JavaScript异步都是通过回调形式完成的,开发过程中一直在处理回调,可能不知不觉中自己就已经处在回调地狱中。
浏览器线程
在开始之前简单的说一下浏览器的线程,对浏览器的作业有个基础的认识。之前说过JavaScript是单线程作业,但是并不代表浏览器就是单线程的。
在JavaScript引擎中负责解析和执行JavaScript代码的线程只有一个。但是除了这个主进程以外,还有其他很多辅助线程。那么诸如onclick回调,setTimeout,Ajax这些都是怎么实现的呢?即浏览器搞了几个其他线程去辅助JavaScript线程的运行。
浏览器有很多线程,例如:
1.GUI渲染线程 - GUI渲染线程处于挂起状态的,也就是冻结状态
2.JavaScript引擎线程 - 用于解析JavaScript代码
3.定时器触发线程 - 浏览器定时计数器并不是 js引擎计数
4.浏览器事件线程 - 用于解析BOM渲染等工作
5.http线程 - 主要负责数据请求
6.EventLoop轮询处理线程 - 事件被触发时该线程会把事件添加到待处理队列的队尾
7.等等等
从上面来看可以得出,浏览器其实也做了很多事情,远远的没有想象中的那么简单,上面这些线程中GUI渲染线程,JavaScript引擎线程,浏览器事件线程是浏览器的常驻线程。
当浏览器开始解析代码的时候,会根据代码去分配给不同的辅助线程去作业。

