异步:现在与将来

  分块的程序

    可以把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)的更多相关文章

  1. 你不知道的JavaScript笔记----对象

    对象: 1.定义对象属性 属性描述符(也称为:数据描述符) Object.defineProperty(Object,PropertyName,{ value: 6, writable: true, ...

  2. 你不知道的javaScript笔记(6)

    语法 语句表达式 句子是完整表达某个意思的一组词,由一个或多个短语组成,他们之间由标点符号或者连接词连接起来. 语句相当于句子,表达式相当于短语,运算符则相当于标点符号和连接词. JavaScript ...

  3. 你不知道的javaScript笔记(5)

    原生函数 常用的原生函数 String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol( ...

  4. 你不知道的javaScript笔记(4)

    类型: JavaScript 有7种内置类型 空值 (null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符串(string) 对象(object) 符号(sy ...

  5. 你不知道的javaScript笔记(3)

    对象 对象可以通过两种形式定义: 声明形式和构造形式 声明形式语法: var myObj = {key:value} 构造形式语法: var myObj = new Object(); myObj.k ...

  6. 你不知道的javaScript笔记(2)

    this和对象原型 this是一个很特别的关键字,被自动定义在所有函数的作用域中 // foo.count 是0,字面理解是错误的 function foo(num) { console.log(&q ...

  7. 你不知道的javaScript笔记(1)

    规避冲突 function foo(){ function bar(a){ i = 3; console.log(a + i); } for ( var i=0; i < 10; i++){ b ...

  8. 你不知道的Javascript(上卷)读书笔记之一 ---- 作用域

    你不知道的Javascript(上卷)这本书在我看来是一本还不错的书籍,这本书用比较简洁的语言来描述Js的那些"坑",在这里写一些博客记录一下笔记以便消化吸收. 1 编译原理 在此 ...

  9. 你不知道的JavaScript上卷笔记

    你不知道的JavaScript上卷笔记 前言 You don't know JavaScript是github上一个系列文章   初看到这一标题的时候,感觉怎么老外也搞标题党,用这种冲突性比较强的题目 ...

随机推荐

  1. c# 文件名排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  2. C语言的前世今生

    1.计算机语言的发展 机器语言:其实就是二进制0和1,最小为00000000,最大为11111111,8位比特为1个字节(byte),1k=1024byte,1m=1024k,1g=1024m[第一代 ...

  3. asp 日期操作

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% Response.Buffer=True Sessi ...

  4. 原生js简单实现拖拽效果

    实现弹窗拖拽效果的原理是:按下鼠标并移动——拖拽移动物体,抬起鼠标——停止移动.主要触发三个事件:onmousedown.onmousemove以及onmouseup: 首先搭建结构:一个宽350px ...

  5. Android应用开发基础之五:网络编程(二)

    HttpClient 发送get请求 创建一个客户端对象 HttpClient client = new DefaultHttpClient(); 创建一个get请求对象 HttpGet hg = n ...

  6. C#实现Stream与byte[]之间的转换实例教程

    一.二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = ; Image img = Image.FromStream(m ...

  7. 字符串相关函数-strcpy()与strcmp()

    一些小问题,避免出现低级错误. 1.strcmp(s1,s2): 字符串指针不见'\0'不回头,这个常在与单个字符作比较时写着写着就忘了. char* p_ch1="this is an e ...

  8. Perl 基础笔记: 使用 cpanm 安装 Perl 模块

    cpanm 其实只是一个可执行文件而已.将它下载到 bin 目录,然后添加执行权限就可以用了. $ sudo wget http://xrl.us/cpanm -O /usr/bin/cpanm; s ...

  9. C++中临时对象的产生与优化

    看到了几篇讲的不错的博客,这里收集起来 不明白的地方互相参考 https://blog.csdn.net/fangqingan_java/article/details/9320769 https:/ ...

  10. Python map/reduce/filter/sorted函数以及匿名函数

    1. map() 函数的功能: map(f, [x1,x2,x3]) = [f(x1), f(x2), f(x3)] def f(x): return x*x a = map(f, [1, 2, 3, ...