1.手绘一张图说明。
2.为什么JavaScript是单线程(这里引用阮一峰老师的话)
JavaScript的单线程,与它的用途有关。
作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。
这决定了它只能是单线程,否则会带来很复杂的同步问题。
比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?
所以,为了避免复杂性,从一诞生,JavaScript就是单线程,这已经成了这门语言的核心特征,将来也不会改变。
为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。
所以,这个新标准并没有改变JavaScript单线程的本质。
传送门:JavaScript运行机制之事件循环(Event Loop)详解
3.JavaScript的异步体现在哪
如一开始的图,个人认为左边主线程就是同步,左边事件队列(消息队列)就是异步。
当然JavaScript中的异步有很多:
Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe(原理类似) setTimeout/setInterval CSS3 Transition/Animation postMessage Web Workers Web Sockets and more…
本文向大家介绍简单谈谈apache与nginx,包括了简单谈谈apache与nginx的使用技巧和注意事项,需要的朋友参考一下 一、 关于Apache与Nginx的优势比较 不断有人跟我说Nginx比Apache好、比Apache快之类。Nginx更主要是作为反向代理,而非Web服务器使用。我翻译过一本关于反向代理的技术书籍,同时精通Apache API开发,对Nginx和Apache的工
本文向大家介绍简单谈谈Python中的json与pickle,包括了简单谈谈Python中的json与pickle的使用技巧和注意事项,需要的朋友参考一下 这是用于序列化的两个模块: • json: 用于字符串和python数据类型间进行转换 • pickle: 用于python特有的类型和python的数据类型间进行转换 Json 模块提供了四个功能:dumps、dump、loads、load
本文向大家介绍再谈JavaScript异步编程,包括了再谈JavaScript异步编程的使用技巧和注意事项,需要的朋友参考一下 随着前端的发展,异步这个词真是越来越常见了。假设我们现在有这么一个异步任务: 向服务器发起数次请求,每次请求的结果作为下次请求的参数。 来看看我们都有哪些处理方法: Callbacks 最先想到也是最常用的便是回调函数了,我们来进行简单的封装: 嗯,看起来还不错!但是当我
本文向大家介绍简单谈谈Android中SP与DP的区别,包括了简单谈谈Android中SP与DP的区别的使用技巧和注意事项,需要的朋友参考一下 从一开始写Android程序,就被告知这些常识 一、dp(或者dip device independent pixels) 一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px。不同设备有不同的显示效果,这个和设备硬件有关。 二、sp(S
本文向大家介绍再谈Javascript中的异步以及如何异步,包括了再谈Javascript中的异步以及如何异步的使用技巧和注意事项,需要的朋友参考一下 为什么需要异步?why?来看一段代码。 问题1: 这段代码的意思是执行100...次后再执行alert,这样带来的问题是,严重堵塞了后面代码的执行,至于为什么,主要是因为JS是单线程的。 问题2: 我们通常要解决这样一个问题,如果我们需要在
本文向大家介绍简单谈谈json跨域,包括了简单谈谈json跨域的使用技巧和注意事项,需要的朋友参考一下 这一篇文章呢,主要是之前一直听别人讲json跨域跨域,但是还是一头雾水,只知其一,于是一怒之下,翻阅各种资料,如果有不正确的地方,劳烦指正一下^_^ 首先,先了解浏览器有一个很重要安全性限制,即为同源策略:不同域的客户端脚本在无明确授权的情况下不能读些对方资源。跨域也就是不同源~ 简单的说,只要
本文向大家介绍简单谈谈Java类与类之间的关系,包括了简单谈谈Java类与类之间的关系的使用技巧和注意事项,需要的朋友参考一下 类与类之间最常见的关系主要有三种:依赖(uses-a)、聚合(has-a)和继承(is-a)。 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念。 在线书店订单系统的主要功能是:注册用户可以登录到网上书店选购图书,在线填写订单,并支付购书款。书店确认已经收到购书款
本文向大家介绍简单谈谈gulp-changed插件,包括了简单谈谈gulp-changed插件的使用技巧和注意事项,需要的朋友参考一下 前言 gulp-changed插件的作用,是用来过滤未被修改过的文件,只有修改后的文件才能通过管道。这样做的好处时,只处理修改后的文件,减少后续程序的执行时间。 根据官方给出的例子: 检测SRC中的文件,然后把从changed()通过的文件输出到DEST文件夹中,