你不知道的javaScript笔记(7)
异步:现在与将来
分块的程序
可以把JavaScript 程序写在单独的js 文件中,这个程序是由多个块组成的,这些块
中只有一个是现在执行,其余在捡来执行,最常见的块单位是函数。
例如:
function now() {
return 21;
}
function later() {
answer = answer * 2;
console.log("Meaning of life:", answer);
}
var answer = now();
setTimeout (later,1000); // Meaning of life: 42
现在:
function now() {
return 21;
}
function later() {...}
setTimeout(later,1000);
setTimeout(later,1000);
将来:
answer = answer * 2;
console.log("Meaning of life:", answer);
异步控制台
事件循环
并行线程
异步是现在和将来的时间间隙,而并行是关于能同时发生的事情。
并行计算最常见的的工具就是进程和线程,并行和线程独立运行,并可能同时运行,
在不同的处理器,甚至不同的计算机上,但多个进程能够共享单个进程的内存。
并发
两个或多个“进程”同时执行就出现了并发,不管组成他们的单个运算是否并行执行
可以把并发看作“进程”及的并行,与计算级的并行相对。
非交互
两个或多个“进程”在同一个程序内并发地交替运行它们的步骤/事件时,如果这些任务彼此不相关,就不一定需要交互。
交互
更常见的情况是,并发的“进程”需要相互交流,通过DOM 间交互。
协作
取到一个长期运行的进程,并将其分割成多个步骤或多批人,使其他并发“进程”有机会将自己的运算插入到事件循环队列中交替运行。
任务
挂在事件循环队列的每个tick 之后的一个队列,在事件循环的每个tick 中,可能
出现异步动作不会导致一个完整的新事件添加到新事件中,而会在当前的tick 的任务队列末尾添加一个项目。
语句顺序
代码中语句的顺序和JavaScript 引擎执行语句的顺序并不一定一致。
JavaScript 引擎在编译这段代码之后,可能会发现通过重新安排这些语句的顺序有可能提过速度。
回调
continuation(延续)
顺序的大脑
执行与计划
嵌套回调与链式回调
信任问题
五个回调的故事
省点回调
- Ubuntu14.04下如何开启Mysql远程访问
- docker学习(7) docker-compose使用示例
- docker学习(3) 容器的启动过程
- 基础野:细说原码、反码和补码
- JavaScript循环读书笔记
- docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速
- HttpClient(一)HttpClient抓取网页基本信息
- Httpd运维日志:通过apxs添加模块
- 探索客户端JavaScript
- docker学习(8) 在mac机上搭建私有仓库
- Jsoup(一)Jsoup详解(官方)
- Ajax几种常用模式
- dubbox升级spring到4.x及添加log4j2支持
- CSS魔法堂:Absolute Positioning就这个样
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何在O(1)时间复杂度下实现LRU
- 字符串拼接的N种方式
- MySQL 解决查询NULL的问题
- 矩阵旋转的解决
- Python partial最通俗的理解
- Django Form的使用
- Python每日一题:装饰器(完整篇)
- Vue视图渲染原理解析,从构建VNode到生成真实节点树
- Vue你不得不知道的异步更新机制和nextTick原理
- 手摸手带你理解Vue的Watch原理
- rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
- Vue - 解决路由过渡动画抖动问题
- TypeScript - 泛型
- TypeScript - 类型声明、枚举、函数、接口
- Vue - 简单实现一个命令式弹窗组件