程序一部分需要现在运行,一部分需要未来运行,现在运行和将来运行的部分之间的关系就是一部编程的核心。
1.1 分块的程序
程序由函数分块,只要把一段代码包装成一个函数,并指定他在响应某个事件时(ajax,定时器等)时执行,即我们在程序中创建了一个将来执行的代码块,也由此引入了异步机制。
异步控制台
console.*等方法输出结果可能不准确,因为异步I/O
1.2 事件循环
js引擎是独立存在的,大部分情况下是运行在web浏览器(宿主环境)中的。
基本的宿主环境必须要提供一种机制来处理程序中多个块的执行,并且执行每个块时调用js引擎,这种机制被称为时间循环。
1.3 并行线程
并行是关于能够同时发生的事情。
并行会让程序变得复杂,同一段代码可能会输出不同的结果
1.4 并发
用异步来模拟并发,单线程事件循环是并发的一种形式。
输出不同需要自己加“门”或者判定条件来确定唯一的结果。
1.5 任务
引入任务队列(它是挂在事件循环队列的每个tick后的一个队列)
tick:事件循环的每一轮。
1.6语句顺序
js引擎在编译这段代码中,可能会发现重新排列这些语句会提高执行速度,重新排序中可能代码会出现bug。
编译过程未知。