anchor.diff:  
   上面的 <<notification-as-promise.js>> 虽然看上去很方便，但是实际上使用的时候，很可能出现 **在不支持Promise的环境下不能使用** 的问题。
   
  -<<notification-as-promise.js>>のようなPromiseスタイルで使えるライブラリを作る場合、
  -ライブラリ作成者には以下の選択肢があると思います。
  +如果你想编写像<<notification-as-promise.js>>这样具有Promise风格和的类库的话，我觉得你有如下的一些选择。
   
   [[promise-library-choice]]
  -Promiseが使える環境を前提とする::
  -* 利用者に `Promise` があることを保証してもらう
  -* Promiseをサポートしてない環境では動かないことにする
  -ライブラリ自体に `Promise` の実装を入れてしまう::
  -* ライブラリ自体にPromiseの実装を取り込む
  -* 例) https://github.com/mozilla/localForage[localForage]
  -コールバックでも `Promise` でも使えるようにする::
  -* 利用者がどちらを使うかを選択出来るようにする
  -* Thenableを返せるようにする
  -
  -<<notification-as-promise.js>>は `Promise` があることを前提としたような書き方です。
  -
  -本題に戻り<<Thenable,Thenable>>はここでいう**コールバックでも `Promise` でも使えるようにする**という事を
  -実現するのに役立つ概念です。
  +支持Promise的环境是前提::
  +* 需要最终用户保证支持`Promise`
  +* 在不支持Promise的环境下不能正常工作（即应该出错）。
  +在类库中实现`Promise`::
  +* 在类库中实现`Promise`功能
  +* 例如） https://github.com/mozilla/localForage[localForage]
  +在回调函数中也应该能够使用 `Promise`::
  +* 用户可以选择合适的使用方式
  +* 返回Thenable类型
  +
  +<<notification-as-promise.js>>就是以`Promise`存在为前提的写法。
  +
  +回归正文，在这里<<Thenable,Thenable>>是为了帮助实现**在回调函数中也能使用`Promise`**的一个概念。
   
   === Web Notifications As Thenable
   
  -<<Thenable,thenable>>というのは `.then` というメソッドを持ってるオブジェクトのことを言いましたね。
  -次は<<notification-callback.js>>に `thenable` を返すメソッドを追加してみましょう。
  +我们已经说过，<<Thenable,thenable>>就是一个具有 `.then`方法的一个对象。下面我们就在<<notification-callback.js>>中增加一个返回值为 `thenable` 类型的方法。 
   
   [role="executable"]
   [source,javascript]
  
positive.code: });
  ----
  
  <<notification-thenable.js>> には `notifyMessageAsThenable` というそのままのメソッドを追加してみました。
  返すオブジェクトには `then` というメソッドがあります。
  
  `then` メソッドの仮引数には `new Promise(function (resolve, reject){})` と同じように、
  解決した時に呼ぶ `resolve` と、棄却した時に呼ぶ `reject` が渡ります。
  
  `then` メソッドがやっている中身は<<notification-as-promise.js>>の `notifyMessageAsPromise` と同じですね。
  
  この `thenable` を `Promise.resolve(thenable)` を使いpromiseオブジェクトにしてから、
  Promiseとして利用していることが分かりますね。
  
  [source,javascript]
  ----
  
negative.code: ----
  <1> 因为是Q promise对象所以可以使用 `finally` 方法
  
  上面代码中最开始被创建的promise对象具备`then`方法，因此是一个Thenable对象。我们可以通过`Q(thenable)`方法，将这个Thenable对象转换为Q promise对象。
  
  可以说它的机制和 `Promise.resolve(thenable)` 一样，当然反过来也一样。 
  
  像这样，Promise类库虽然都有自己类型的promise对象，但是它们之间可以通过Thenable这个共通概念，在类库之间（当然也包括native Promise）进行promise对象的相互转换。
  
  我们看到，就像上面那样，Thenable多在类库内部实现中使用，所以从外部来说不会经常看到Thenable的使用。但是我们必须牢记Thenable是Promise中一个非常重要的概念。
  