目 录
第1章 深入理解JavaScript事件 1
1.1 事件的调度 1
1.1.1 现在还是将来运行 2
1.1.2 线程的阻塞 3
1.1.3 队列 4
1.2 异步函数的类型 5
1.2.1 异步的I/O函数 5
1.2.2 异步的计时函数 7
1.3 异步函数的编写 10
1.3.1 何时称函数为异步的 10
1.3.2 间或异步的函数 11
1.3.3 缓存型异步函数 12
1.3.4 异步递归与回调存储 14
1.3.5 返值与回调的混搭 15
1.4 异步错误的处理 18
1.4.1 回调内抛出的错误 18
1.4.2 未捕获异常的处理 20
1.4.3 抛出还是不抛出 23
1.5 嵌套式回调的解嵌套 24
1.6 小结 26
第2章 分布式事件 27
2.1 PubSub模式 28
2.1.1 EventEmitter对象 30
2.1.2 玩转自己的PubSub 31
2.1.3 同步性 32
2.2 事件化模型 34
2.2.1 模型事件的传播 35
2.2.2 事件循环与嵌套式变化 36
2.3 jQuery自定义事件 38
2.4 小结 41
第3章 Promise对象和Deferred对象 43
3.1 Promise极简史 45
3.2 生成Promise对象 46
3.2.1 生成纯Promise对象 48
3.2.2 jQuery API中的Promise对象 50
3.3 向回调传递数据 52
3.4 进度通知 53
3.5 Promise对象的合并 55
3.6 管道连接未来 58
3.7 jQuery与Promises/A的对比 62
3.8 用Promise对象代替回调函数 63
3.9 小结 65
第4章 Async.js的工作流控制 67
4.1 异步工作流的次序问题 68
4.2 异步的数据收集方法 70
4.2.1 Async.js的函数式写法 71
4.2.2 Async.js的错误处理技术 73
4.3 Async.js的任务组织技术 75
4.3.1 异步函数序列的运行 75
4.3.2 异步函数的并行运行 77
4.4 异步工作流的动态排队技术 78
4.4.1 深入理解队列 78
4.4.2 任务的入列 80
4.4.3 完工事件的处理 81
4.4.4 队列的高级回调方法 82
4.5 极简主义者Step的工作流控制 83
4.6 小结 84
第5章 worker对象的多线程技术 87
5.1 网页版worker对象 89
5.1.1 网页版worker对象的局限性 90
5.1.2 支持网页版worker的浏览器 91
5.2 cluster带来的Node版worker 92
5.2.1 Node版worker的交互接口 94
5.2.2 Node版worker对象的局限性 95
5.3 小结 96
第6章 异步的脚本加载 97
6.1 局限性与补充说明 98
6.2 标签的再认识 99
6.2.1 阻塞型脚本何去何从 99
6.2.2 脚本的延迟运行 101
6.2.3 脚本的完全并行化 102
6.3 可编程的脚本加载 105
6.3.1 直接加载脚本 105
6.3.2 yepnope的条件加载 106
6.3.3 Require.js/AMD的智能加载 108
6.4 小结 111
附录 JavaScript编辑工具 113
索引 118
^ 收 起