anchor.diff:  :marked
     As the user types in the search box, a *keyup* event binding calls the component's `search` method with the new search box value.
   
  -  当用户在搜索框中输入时，一个*keyup*事件绑定会调用该组件的`search`方法，并传入新的搜索框的值。
  +  当用户在搜索框中输入时，一个 *keyup* 事件绑定会调用该组件的`search`方法，并传入新的搜索框的值。
   
     The `*ngFor` repeats *hero* objects from the component's `heroes` property. No surprise there.
   
  -  `*ngFor`从该组件的`heroes`属性重复获取*hero*对象。这也没啥特别的。
  +  `*ngFor`从该组件的`heroes`属性重复获取 *hero* 对象。这也没啥特别的。
   
     But, as we'll soon see, the `heroes` property is now !{_an} *!{_Observable}* of hero !{_array}s, rather than just a hero !{_array}.
     The `*ngFor` can't do anything with !{_an} `!{_Observable}` until we flow it through the `async` pipe (`AsyncPipe`).
  
positive.code: 
      An *observable* is a stream of events that we can process with array-like operators.
  
      一个*可观察对象*是一个事件流，我们可以用数组型操作符（函数）来处理它。
  
      Angular core has basic support for observables. We developers augment that support with
      operators and extensions from the [RxJS Observables](http://reactivex.io/rxjs/) library.
      We'll see how shortly.
  
      Angular内核中提供了对可观察对象的基本支持。而我们这些开发人员可以自己从[RxJS可观察对象](http://reactivex.io/rxjs/)库中引入操作符和扩展。
      我们会简短的讲解下如何做。
  
      Recall that our `HeroService` quickly chained the `toPromise` operator to the `Observable` result of `http.get`.
  
negative.code:     and it helps that promises are widely understood by JavaScript programmers.
  
      转换成承诺通常是更好地选择，我们通常会要求`http.get`获取单块数据。只要接收到数据，就算完成。
      使用承诺这种形式的结果是让调用方更容易写，并且承诺已经在 JavaScript 程序员中被广泛接受了。
  
  :marked
    But requests aren't always "one and done". We may start one request,
  