anchor.diff:  });
   ----
   
  -この `getURL` では、
  -XHRでの取得結果のステータスコードが200の場合のみ `resolve` - つまり取得に成功、
  -それ以外はエラーであるとして `reject` しています。
  -
  -`resolve(req.response)` ではレスポンスの内容を引数に入れています。
  -resolveの引数に入れる値には特に決まりはありませんが、コールバックと同様に次の処理へ渡したい値を入れるといいでしょう。
  -(この値は `then` メソッドで受け取ることが出来ます)
  -
  -Node.jsをやっている人は、コールバックを書く時に `callback(error, response)` と第一引数にエラーオブジェクトを
  -入れることがよくあると思いますが、Promiseでは役割がresolve/rejectで分担されているので、
  -resolveにはresponseの値のみをいれるだけで問題ありません。
  + `getURL` 只有在
  +通过XHR取得结果状态为200时 `resolve` - 也就是取得成功，
  +除此以外就是取得失败 `reject` 。
   
   
  -次に、`reject` の方を見て行きましょう。
  +`resolve(req.response)` 在response的内容中加入了参数。
  +resolve的参数值并没有特定，和回调函数一样可以通过它传递下个处理的参数值。
  +( `then` 方法可以接收到这个参数值)
   
  -XHRで `onerror` のイベントが呼ばれた場合はもちろんエラーなので `reject` を呼びます。
  -ここで `reject` に渡している値に注目してみてください。
  +熟悉Node.js的人，经常会在写回调函数时将 `callback(error, response)` 的第一个参数传入error对象，而在Promise中resolve/reject担当了这个职责，所以
  +在resolve中只加入response的值是没有问题的。
   
  -エラーの場合は `reject(new Error(req.statusText));` というように、Errorオブジェクトを作成して渡している事がわかると思います。
  -`reject` に渡す値に制限はありませんが、一般的にErrorオブジェクト(またはErrorオブジェクトを継承したもの)を渡すことになっています。
  +接下来我们来看一下`reject`。
   
  -`reject` に渡す値は、rejectする理由を書いたErrorオブジェクトとなっています。
  -今回は、ステータスコードが200以外であるならrejectするとしていたため、`reject` にはstatusTextを入れています。
  -(この値は `then` メソッドの第二引数 or `catch` メソッドで受け取ることが出来ます)
  +XHR中 `onerror` 事件被触发的时候就是发生错误时所以理所当然被称为`reject`。
  +这里我们重点来看一下传入`reject`的值。
   
  -=== promiseオブジェクトに処理を書く
  +发生错误时要像这样 `reject(new Error(req.statusText));` ，创建一个Error对象后再传入。
  +传入`reject` 的值并没有特殊的限制，一般只要是Error对象（或者继承自Error对象）就可以将其传入。
   
  -先ほどの作成したpromiseオブジェクトを返す関数を実際に使ってみましょう
  +传入`reject` 的值，其中一般是包含了reject原因的Error对象。
  +本次因为状态值不等于200而reject，所以`reject` 中放入的是statusText。
  +（这个值`reject` 方法的第二个参数或者 `catch` 方法中可以取到）
  +
  +=== 向promise对象中写处理
  +
  +让我们在实际中使用一下刚才创建的返回promise对象的函数
   
   [source,javascript]
  -getURL("http://example.com/"); // => promiseオブジェクトが返ってくる
  +getURL("http://example.com/"); // => 返回promise对象
   
  -<<promises-overview,Promises Overview>> でも簡単に紹介したようにpromiseオブジェクトは幾つかインスタンスメソッドを持っており、
  -これを使いpromiseオブジェクトの状態に応じて一度だけ呼ばれるコールバックとなる関数を登録します。
  +如<<promises-overview,Promises Overview>> 中做的简单介绍一样promise对象拥有几个实例方法，
  +使用它们来创建对应promise对象状态并且只调用一次的回调函数。
   
  -promiseオブジェクトに登録する処理は以下の2種類が主となります
  +创建promise对象的处理只要有以下两种
   
  -* promiseオブジェクトが **resolve** された時の処理(onFulfilled)
  -* promiseオブジェクトが **reject** された時の処理(onRejected)
  +* promise对象被 **resolve** 时的处理(onFulfilled)
  +* promise对象被 **reject** 时的处理(onRejected)
   
   [[promise-value-flow]]
   .promise value flow
   image::img/promise-onFulfilled_onRejected.png[promise-resolve-flow]
   
  -まずは、`getURL` で通信が成功して値が取得出来た場合の処理を書いてみましょう。
  +首先，我们来尝试写一下`getURL` 通信成功并取到值时的处理。
   
  -この場合の _通信が成功した_ というのは、
  -resolveされたことにより_promiseオブジェクトがFulFilledの状態になった_ 時という事ですね。
  +此时所谓的 _通信成功_ ，
  +指的就是被resolve后_promise对象变为FulFilled状态_ 。
   
  -**resolve**された時の処理は、 <<promise.then,`.then`>> メソッドに呼ばれたい関数を渡すことで行えます。
  +被**resolve**后的处理，可以在<<promise.then,`.then`>> 方法中传入想要调用的函数。
   
   [source,javascript]
   ----
  
positive.code: 
  用Promise来获取非同期处理XMLHttpRequest(XHR)的数据。
  
  ==== 做成XHR的promise对象
  
  首先，用Promise把XHRを使って包んだような `getURL` という関数を作ります。
  
  [role="executable"]
  [[xhr-promise.js]]
  
negative.code: 
  我们来介绍一下Promise的基本写法。
  
  === 创建promise对象
  
  创建promise对象的流程如下所示。
  
  . `new Promise(fn)` 返回一个promise对象
  . 在`fn` 中写非同期等处理
  