我正在尝试在我的代码中使用“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);
答案 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。