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: });
  ----
  
  Thenableを使った<<notification-thenable.js>>とPromiseに依存した<<notification-as-promise.js>>は、
  非常に似た使い方ができることがわかります。
  
  <<notification-thenable.js>>には<<notification-as-promise.js>>と比べた時に、次のような違いがあります。
  
  * ライブラリ側に `Promise` 実装そのものはでてこない
  ** 利用者が `Promise.resolve(thenable)` を使い `Promise` の実装を与える
  * Promiseとして使う時に `Promise.resolve(thenable)` と一枚挟む必要がある
  
  <<Thenable,Thenable>>オブジェクトを利用することで、
  既存のコールバックスタイルとPromiseスタイルの中間的な実装をすることができました。
  
  === 总结
  
  このセクションではThenableとは何かやThenableを `Promise.resolve(thenable)` を使って、
  promiseオブジェクトとして利用する方法について学びました。
  
  Callback -- Thenable -- Promise
  
  Thenableスタイルは、コールバックスタイルとPromiseスタイルの中間的な表現で、
  ライブラリが公開するAPIとしては中途半端なためあまり見かけることがないと思います。
  
  Thenable自体は `Promise` という機能に依存してはいませんが、Promise以外からの利用方法は特にないため、
  間接的にはPromiseに依存しています。
  
  また、使うためには利用者が `Promise.resolve(thenable)` について理解している必要があるため、
  ライブラリの公開APIとしては難しい部分があります。
  Thenable自体は公開APIより、内部的に使われてるケースが多いでしょう。
  
  [NOTE]
  ====
  非同期処理を行うライブラリを書く際には、まずはコールバックスタイルの関数を書いて公開APIとすることをオススメします。
  
  Node.jsのCore moduleがこの方法をとっているように、ライブラリが提供するのは基本となるコールバックスタイル関数としたほうが、
  利用者がPromiseやGenerator等の好きな方法で実装ができるためです。
  
  最初からPromiseで利用することを目的としたライブラリや、その機能がPromiseに依存している場合は、
  promiseオブジェクトを返す関数を公開APIとしても問題ないと思います。
  ====
  
  ==== 什么时候该使用Thenable？
  
  那么，又是在什么情况下应该使用Thenable呢？
  
  恐らく、一番多く使われている所は<<promise-library,Promiseのライブラリ>>間での相互変換でしょう。
  
  例えば、 QライブラリのPromiseのインスタンスであるQ promiseオブジェクトは、
  <<es6-promises,ES6 Promises>>のpromiseオブジェクトが持っていないメソッドを持っています。
  Q promiseオブジェクトには `promise.finally(callback)` や `promise.nodeify(callback)` などのメソッドが用意されてます。
  
  ES6 PromisesのpromiseオブジェクトをQ promiseオブジェクトに変換するときに使われるのが、
  まさにこのThenableです。
  
  [source,javascript]
  .使用thenable将promise对象转换为Q promise对象
  
negative.code: });
  ----
  
  <<notification-thenable.js>>里增加了一个 `notifyMessageAsThenable`方法。这个方法返回的对象具备一个`then`方法。 
  
  `then`方法的参数和 `new Promise(function (resolve, reject){})` 一样，在确定时执行 `resolve` 方法，拒绝时调用 `reject` 方法。
  
  `then` 方法和 <<notification-as-promise.js>> 中的 `notifyMessageAsPromise` 方法完成了同样的工作。
  
  我们可以看出， `Promise.resolve(thenable)` 通过使用了  `thenable` 这个promise对象，就能利用Promise功能了。
  
  [source,javascript]
  ----
  