最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Javascript异步任务原理(图文)

来源:动视网 责编:小采 时间:2020-11-27 19:33:48
文档

Javascript异步任务原理(图文)

Javascript异步任务原理(图文):大家知道,javascript代码只能在一个线程上执行,也就是单线程,单线程上执行的代码有个特点:即只能顺序执行,如果代码中出现了耗时的运算逻辑,很可能会让浏览器假死。那么javascript为什么会被设计成单线程模型呢?Javascript的设计者认为,如果java
推荐度:
导读Javascript异步任务原理(图文):大家知道,javascript代码只能在一个线程上执行,也就是单线程,单线程上执行的代码有个特点:即只能顺序执行,如果代码中出现了耗时的运算逻辑,很可能会让浏览器假死。那么javascript为什么会被设计成单线程模型呢?Javascript的设计者认为,如果java
大家知道,javascript代码只能在一个线程上执行,也就是单线程,单线程上执行的代码有个特点:即只能顺序执行,如果代码中出现了耗时的运算逻辑,很可能会让浏览器假死。

那么javascript为什么会被设计成单线程模型呢?

Javascript的设计者认为,如果javascript被设计成多线程,会大大增加程序的复杂性,比如:如果有两个线程,一个线程负责创建一个button按钮,另一个线程删除这个button,由于多线程执行顺序的不确定性,页面上可能会出现这个button,也可能不会出现这个button,这会给开发者带来很大的困扰。因此,为了简单起见,javascript从一开始就被设计成了单线程模型,这是javascript最核心的特征。

为了解决javascript单线程的限制,javascript程序里的任务分为:同步任务和异步任务

2.png

同步任务:指在主线程上没有被javascript引擎挂起,排队执行的任务,只有前一个任务执行完成后,下一个任务才会开始执行。

异步任务:指有些耗时的任务(如IO请求),被javascript引擎放到任务队列中的任务,因为这些任务没有在主线程上,所以这些任务在没有被调度到主线程之前不会被执行(如ajax中的回调函数)。

那么任务队列是怎么来的呢?

实际上,javascript在执行的时候,除了主线程外,javascript引擎还会创建一些任务队列,里面放一些当前程序需要处理的异步任务,如ajax的异步回调函数,setTimeout中的函数等等。当主线程上的任务全部执行完成后,引擎会到各个任务队列中查看是否有满足执行条件的任务,如果有,就会将其调度到主线程上执行。

文档

Javascript异步任务原理(图文)

Javascript异步任务原理(图文):大家知道,javascript代码只能在一个线程上执行,也就是单线程,单线程上执行的代码有个特点:即只能顺序执行,如果代码中出现了耗时的运算逻辑,很可能会让浏览器假死。那么javascript为什么会被设计成单线程模型呢?Javascript的设计者认为,如果java
推荐度:
标签: 原理 任务 图文
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top