rxjs和angular 2以及“take”运算符的使用

时间:2016-10-07 14:22:16

标签: angular rxjs5

我正在尝试在我的代码中使用“take”运算符(学习rxjs),但它并没有像我想要的那样发送前5名。我的简单代码如下,任何人都知道如何提供帮助?

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);

1 个答案:

答案 0 :(得分:0)

阅读完评论后,我了解到您需要前5个国家/地区。现在请注意,您的observable会发出国家/地区而非国家/地区的数组。你使用Observable.of而不是Observable.from的原因。所以,正确的语法应该是:

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

如果您想要演示各种用例的示例,请查看this jsbin