anchor.diff:  
       有很多像`toPromise`这样的操作符，用于扩展`Observable`，为其添加有用的能力。
       如果我们希望得到那些能力，就得自己添加那些操作符。
  -    那很容易，只要从RxJS库中导入它们就可以了，就像这样：
  +    那很容易，只要从 RxJS 库中导入它们就可以了，就像这样：
   
     +makeExcerpt('app/hero.service.ts', 'rxjs', '')
   
     :marked
       ### Extracting the data in the *then* callback
   
  -    ### 在*then*回调中提取出数据
  +    ### 在 *then* 回调中提取出数据
   
       In the *promise*'s `then` callback we call the `json` method of the HTTP `Response` to extract the
       data within the response.
   
  -    在*promise*的`then`回调中，我们调用HTTP的`Reponse`对象的`json`方法，以提取出其中的数据。
  +    在 *promise* 的`then`回调中，我们调用 HTTP 的`Reponse`对象的`json`方法，以提取出其中的数据。
   
     +makeExcerpt('app/hero.service.ts', 'to-data', '')
   
  
positive.code:   Such a _request-cancel-new-request_ sequence is difficult to implement with *!{_Promise}s*.
    It's easy with *!{_Observable}s* as we'll see.
  
    但是请求并非总是“一次性”的。我们可以开始一个请求，并且取消它，再开始另一个不同的请求 —— 在服务器对第一个请求作出回应之前。
    像这样一个_请求-取消-新请求_的序列用*承诺*是很难实现的，但接下来我们会看到，它对于*可观察对象*却很简单。
  
    ### Search-by-name
  
negative.code:       until the service supports that feature, a topic for another day.
        We are content for now to discard unwanted results.
  
        注意，_取消_`HeroSearchService`的可观察对象并不会实际中止 (abort) 一个未完成的 HTTP 请求，
        除非服务支持这个特性，这个问题我们以后再讨论。
        目前我们的做法只是丢弃不希望的结果。
  
    :marked
  