你不知道的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(延续)
顺序的大脑
执行与计划
嵌套回调与链式回调
信任问题
五个回调的故事
省点回调
你不知道的javaScript笔记(7)的更多相关文章
- 你不知道的JavaScript笔记----对象
对象: 1.定义对象属性 属性描述符(也称为:数据描述符) Object.defineProperty(Object,PropertyName,{ value: 6, writable: true, ...
- 你不知道的javaScript笔记(6)
语法 语句表达式 句子是完整表达某个意思的一组词,由一个或多个短语组成,他们之间由标点符号或者连接词连接起来. 语句相当于句子,表达式相当于短语,运算符则相当于标点符号和连接词. JavaScript ...
- 你不知道的javaScript笔记(5)
原生函数 常用的原生函数 String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol( ...
- 你不知道的javaScript笔记(4)
类型: JavaScript 有7种内置类型 空值 (null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符串(string) 对象(object) 符号(sy ...
- 你不知道的javaScript笔记(3)
对象 对象可以通过两种形式定义: 声明形式和构造形式 声明形式语法: var myObj = {key:value} 构造形式语法: var myObj = new Object(); myObj.k ...
- 你不知道的javaScript笔记(2)
this和对象原型 this是一个很特别的关键字,被自动定义在所有函数的作用域中 // foo.count 是0,字面理解是错误的 function foo(num) { console.log(&q ...
- 你不知道的javaScript笔记(1)
规避冲突 function foo(){ function bar(a){ i = 3; console.log(a + i); } for ( var i=0; i < 10; i++){ b ...
- 你不知道的Javascript(上卷)读书笔记之一 ---- 作用域
你不知道的Javascript(上卷)这本书在我看来是一本还不错的书籍,这本书用比较简洁的语言来描述Js的那些"坑",在这里写一些博客记录一下笔记以便消化吸收. 1 编译原理 在此 ...
- 你不知道的JavaScript上卷笔记
你不知道的JavaScript上卷笔记 前言 You don't know JavaScript是github上一个系列文章 初看到这一标题的时候,感觉怎么老外也搞标题党,用这种冲突性比较强的题目 ...
随机推荐
- 用AJAX实现页面登陆以及注册用户名验证
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX 是一种用于创建快 ...
- python之高阶函数filter
原文 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返 ...
- PAT 1076 Forwards on Weibo
#include <cstdio> #include <cstdlib> #include <vector> #include <queue> #inc ...
- iOS开发之GCD基础
重新回顾.学习GCD.Block.先贴出一篇不错的讲解GCD基础使用的文章 原文地址:http://blog.csdn.net/aolan1108/article/details/17283415 做 ...
- oracle学习篇四:多表查询
-----------------产生笛卡儿积------------------------------------ select * from emp,dept; --不带条件时,记录数为14*4 ...
- css中的单位和css中的颜色表示方法
css中颜色的表示方式: 图片来源http://www.w3school.com.cn
- 【转】成型滤波与匹配滤波的MATLAB实现
转载自:https://blog.csdn.net/yuan1164345228/article/details/45919315 Fd=1; Fs=8; Delay=3; R=0.5; [yf,tf ...
- 再学UML-Bug管理系统UML2.0建模实例(二)
2.3 BMS顺序图(需求模型) 在UML中,我们将顺序图分为两类,一类用于描述系统需求,构造系统的需求模型(分析模型):另一类用于指导设计与实现,构造系统的实现模型(设计模型). ...
- spring boot拦截器配置
1.在spring boot配置文件application.properties中添加要拦截的链接 com.url.interceptor=/user/test 2.编写拦截器代码 ,创建UrlInt ...
- 小于12px的字体大小在Chrome中不起作用
今天遇见一个小问题,让人挺郁闷的,在Chrome浏览器中无法把字体变成12px以下.网上搜索以下,发现无论中文英文数字在网页中CSS设置小于12px后各大浏览器均支持,在谷歌chrome浏览器不支持解 ...