Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PublishSubject不';打onNext时,我什么也不做_Java_Rx Java - Fatal编程技术网

Java PublishSubject不';打onNext时,我什么也不做

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

这是我在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 = 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你是如何解决这种情况的?