异步:现在与将来

91 阅读1分钟

程序一部分需要现在运行,一部分需要未来运行,现在运行和将来运行的部分之间的关系就是一部编程的核心。

1.1 分块的程序

程序由函数分块,只要把一段代码包装成一个函数,并指定他在响应某个事件时(ajax,定时器等)时执行,即我们在程序中创建了一个将来执行的代码块,也由此引入了异步机制。
异步控制台
console.*等方法输出结果可能不准确,因为异步I/O

1.2 事件循环

js引擎是独立存在的,大部分情况下是运行在web浏览器(宿主环境)中的。
基本的宿主环境必须要提供一种机制来处理程序中多个块的执行,并且执行每个块时调用js引擎,这种机制被称为时间循环。

1.3 并行线程

并行是关于能够同时发生的事情。
并行会让程序变得复杂,同一段代码可能会输出不同的结果

1.4 并发

用异步来模拟并发,单线程事件循环是并发的一种形式。
输出不同需要自己加“门”或者判定条件来确定唯一的结果。

1.5 任务

引入任务队列(它是挂在事件循环队列的每个tick后的一个队列)
tick:事件循环的每一轮。

1.6语句顺序

js引擎在编译这段代码中,可能会发现重新排列这些语句会提高执行速度,重新排序中可能代码会出现bug。
编译过程未知。