【发布时间】:2018-04-24 19:49:18
【问题描述】:
我对响应式编程非常陌生,这是我使用 RxJs 的第一件事,无限滚动:
public pageByScroll$ = Observable.fromEvent(window, "scroll")
.map(() => document.documentElement.scrollHeight - document.documentElement.scrollTop - document.documentElement.clientHeight)
.filter(x => x < 800)
.debounceTime(200)
.scan(count => count + 1, 0);
handleScroll() {
this.pageByScroll$.subscribe(
pageToLoad => this.advertiserService
.getAdvertisersByPage(pageToLoad)
.subscribe(advertisers => this.advertisers = this.advertisers.concat(advertisers))
);
};
getAdvertisersByPage(page: number): Observable<AdvertiserClass[]> {
return this.http.get(this.advertisersUrl + '/pager/' + page)
.map(res => {
return res.json().map(advertiser => {
return new AdvertiserClass(advertiser);
});
});
}
我的问题是来自测试数据库服务器很远,它需要1+秒才能接收数据。
如果我在没有收到新数据并且页面高度很小的情况下继续滚动,它会继续发送下一页的请求。
我怎样才能让它等待发送请求而没有收到前一个?
【问题讨论】:
标签: javascript angular typescript rxjs reactive-programming