2016-10-07 7 views
1

自分のコード(rxjsの学習)に "take"演算子を使用しようとしていますが、私が望むようにトップ5を送信していません。私の簡単なコードは以下の通りですが、どのように助けてくれるのでしょうか?rxjsとangular 2と "take"演算子の使用

countries: Observable<Country[]>; 

private searchTerms = new Subject<string>(); 

this.countries = this.searchTerms.debounceTime(300).distinctUntilChanged().switchMap( 
      searchTerm => searchTerm ? this.countrySearchService.search(searchTerm) : observable.of<Country[]>([])) 
      .take(5); 
+0

take(5)and take(1)なぜですか?配列の最後の5つの結果または最後の5つの配列を取得しようとしていますか? – Meir

+0

私は配列の最初の5カ国を借りたいと思います。 –

答えて

0

あなたのコメントを読んだ後、私は最初の5カ国が必要であると理解しています。あなたの観測は、国ではなく国の配列を放出することに注意してください。 Observable.fromの代わりにObservable.ofを使用する理由。だから、右の構文は次のようになります。あなたは、さまざまなユースケースを示すサンプルが必要な場合

this.countries = this.searchTerms.debounceTime(300).distinctUntilChanged().switchMap( 
     searchTerm => searchTerm ? this.countrySearchService.search(searchTerm) : observable.from<Country[]>([])) 
     .take(5); 

this jsbinを見ています。

+0

あなたの説明とコードスニペットは理解しやすいです。感謝万円。 –

関連する問題