概述

JavaScript 层层回调的异步编程让人望而生畏。而 Promise 的诞生就是为了解决这个问题,它提供了一种 Future 模式,大大简化了异步编程的复杂性。而 Promise/A+(中文版)是一个通用的、标准化的规范,它提供了一个可互操作的 then 方法的实现定义。Promise/A+ 规范的实现有很多,它们的共同点就是都有一个标准的 then 方法,而其它的 API 则各不相同。

ECMAScript 6 提供了一套 Promise 的标准实现,目前大部分浏览器和较新版本的 Node.js 也都已经支持,但老旧的浏览器和旧版本的 Node.js 上是没有内置 Promise 实现的。另外,ECMAScript 6 这套 Promise 实现,所提供的 API 也是极其有限,只能满足基本需求。

为了能够有一套统一的 Promise 实现,并且不依赖第三方库,hprose 自己实现了一套完全兼容 Promise/A+ 规范的 API。

hprose 2.0 之前的版本提供了一组 Future/Completer 的 API,其中 Future 对象上也提供了 then 方法,但并不完全兼容 Promise/A+ 规范。它最初是参照 Dart 语言中的 Future/Completer 设计的。

而在 hprose 2.0 版本中,我们对 Future 的实现做了比较大的改进,现在它既兼容 Dart 的 Future/Completer 使用方式,又完全兼容 Promise/A+ 规范,而且还增加了许多非常实用的方法。下面我们就来对这些方法做一个全面的介绍。