JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

对JavaScript异步编程的总结

在本章中,我们学到了PubSub 如何作为最基本的JavaScript 设计模式之一实现了分布式事件。如果没有订阅那些行将发布的事件,PubSub将是完全隐形的。正确运用PubSub 模式的关键是判定由哪些实体分发事件。

我们已经看到,任何对象只要简单地继承诸如Node 之EventEmitter这样的原型,就可以用作PubSub 实体。当对象关联着一组异步任务或一系列I/O 事件时,把它变成事件化对象会是个不错的想法。

有一类特殊的事件化对象是MVC 库(如Backbone.js)中的模型。这些模型既包含着应用程序的状态数据,又能声明自己发生的变化。

change 事件可以触发应用程序的逻辑,引起DOM 的更新,并导致服务器的同步。所有这些都是自然而然发生的,这也解释了Backbone为什么会成为火爆异常的JavaScript 库之一。

我们还看到,jQuery 不仅能很好地响应浏览器提供的DOM 事件,而且还非常适用于那些与DOM 元素变化有关的分布式事件。事件化的对象与DOM 元素的事件可以彼此完美互补,这有助于保持应用状态数据与应用视图相对于彼此的封装状态。

所有这些都是活生生的PubSub 实例。不过,尽管PubSub 模式如此多才多艺,但它不是适用于所有任务的万能工具。PubSub 模式尤其不适用于一次性事件,一次性事件要求对异步函数执行的一次性任务的两种结果(完成任务或任务失败)做不同的处理。(Ajax 请求就是常见的一次性事件实例。)用于解决一次性事件问题的工具叫做Promise,这正是下一章的主题。