Java PublishSubject不';打onNext时,我什么也不做
这是我在PublishSubject中使用的代码Java PublishSubject不';打onNext时,我什么也不做,java,rx-java,Java,Rx Java,这是我在PublishSubject中使用的代码 public class RxPager { private int startPage; //starting page number private final int initialPageCount; //number of pages to provide when requestNext() is called private final PublishSubject<Integer> requests = Publi
public class RxPager {
private int startPage; //starting page number
private final int initialPageCount; //number of pages to provide when requestNext() is called
private final PublishSubject<Integer> requests = PublishSubject.create();
private int requestedCount; //basically keeps track of the last page that was requested
public RxPager() {
this(1, 1); // by default start at page #1
}
public RxPager(int startPage, int initialPageCount) {
this.initialPageCount = initialPageCount;
this.startPage = startPage;
}
public void decrementRequestedCount(){
requestedCount--;
}
public void requestNext(int page) {
requests.onNext(page);
}
public Observable<Integer> pages() {
return requests
.concatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer targetPage) {
//check if we have already provided this page -- if targetPager is less than requestedCount it means this page has already been provided
if (targetPage <= requestedCount) {
return Observable.empty();
}
else {
//returns each page one by one and adds an offset to them
return Observable.range(requestedCount, targetPage - requestedCount)
.flatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer page) {
return Observable.just(page + startPage); // offset the page number
}
});
}
}
})
.startWith(
Observable.range(0, initialPageCount)
.flatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer page) {
return Observable.just(page + startPage); // offset the page number
}
})
)
.doOnNext(new Action1<Integer>() {
@Override
public void call(Integer it) {
//make sure to increment requested count so that the same page can't be requested
requestedCount = it - startPage + 1; //need to offset here too
}
});
}
}
公共类RxPager{
private int startPage;//起始页码
private final int initialPageCount;//调用requestNext()时提供的页数
private final PublishSubject requests=PublishSubject.create();
private int requestedCount;//基本上跟踪请求的最后一页
公共RxPager(){
此(1,1);//默认情况下从第#1页开始
}
公共RxPager(int起始页,int初始页计数){
this.initialPageCount=initialPageCount;
this.startPage=startPage;
}
public void decrementRequestedCount(){
请求计数--;
}
公共无效请求下一页(整版页){
请求.onNext(第页);
}
公共可观察页面(){
返回请求
.concatMap(新函数1(){
@凌驾
公共可观察呼叫(整数targetPage){
//检查是否已经提供了此页面——如果targetPager小于requestedCount,则表示已经提供了此页面
如果(targetPage)当提到“API错误”时,你是指调用onError()
吗?如果是,那么onError()
以及onComplete()
是Observable
的最终状态。之后,Observable
将不再发出任何信息。@sree你是如何解决这种情况的?你的意思是onError()
当提到“API错误”时调用?如果是这样,那么onError()
以及onComplete()
是可观察的
的最终状态。之后,可观察的
将不再发出任何信息。@sree你是如何解决这种情况的?