【发布时间】:2015-04-01 02:25:31
【问题描述】:
我有分页界面。给定一个起点,一个请求将产生一个结果列表和一个继续指示符。
我创建了一个 observable,它是通过构造和平面映射读取页面的 observable 来构建的。此 observable 的结果包含页面的数据和要继续使用的值。我提取数据并将其平面映射到订阅者。产生一个值流。
为了处理分页,我为下一页值创建了一个主题。它使用初始值播种,然后每次收到包含有效下一页的响应时,我都会推送到页面主题并触发另一次读取,直到没有更多可读取的时间为止。
有没有更惯用的方法?
function records(start = 'LATEST', limit = 1000) {
let pages = new rx.Subject();
this.connect(start)
.subscribe(page => pages.onNext(page));
let records = pages
.flatMap(page => {
return this.read(page, limit)
.doOnNext(result => {
let next = result.next;
if (next === undefined) {
pages.onCompleted();
} else {
pages.onNext(next);
}
});
})
.pluck('data')
.flatMap(data => data);
return records;
}
【问题讨论】: