title: In what cases take operator is actually used?
body: <p>I would like to understand why <code>take</code> operator is used in code given below.</p>
  
  <pre><code>private _places = new BehaviorSubject&lt;Place[]&gt;(
  // places for initialization
  );
  
  get places() {
    return this._places.asObservable();
  }
  
  addPlace(title: string, description: string, price: number)
  {
      generatedId: string;
      newPlace: Place;
      // code to initialize newPlace
      return this.http.post&lt;{name: string}&gt;(
          'https://ionic-angular-ef2f8.firebaseio.com/offered-places.json', 
          {...newPlace, id: null})
          .pipe(
            switchMap(response =&gt; {
              generatedId = response.name;
              return this.places;
            }),
            take(1),
            tap(places =&gt; {
              newPlace.id = generatedId;
              this._places.next(places.concat(newPlace));
            })
          );
  }
  </code></pre>
  
  <p><code>post</code> request returns an <code>Observable</code>, and we get a value from it in <code>switchMap</code> operator (note that we do not <code>take</code> a value before calling <code>switchMap</code>). In <code>switchMap</code> we replace the observable with a new observable got from <code>_places</code>, a <code>BehaviourSubject</code> object. After <code>switchMap</code> we use <code>take</code> operator.
  Why don't we skip <code>take</code> operator, and use <code>tap</code> straight off? Do we <code>take</code> a value from an observable, because the observable is generated from a subject? Who can explain the use case of <code>take</code> operator in details?</p>
  
  <p>UPDATE</p>
  
  <p>I suspect that the reason I should use <code>take</code> operator after <code>switchMap</code> is that <code>switchMap</code> returns an observable received from an object of type <code>BehaviorSubject</code> which holds emitted values. One can subscribe to such <code>BehaviorSubject</code> object and <code>take</code> the latest emitted value - that's exactly what I did.</p>