mcxiaoke/RxDocs

Scan操作符 中的错误

qhyuan opened this issue · 0 comments

Scan操作符会从第二项数据开始应用函数,当只有一个数据时不会应用函数。函数的第一个参数为第一项数据或上次函数的返回值,第二个参数为当前要处理的数据。

 Observable<Integer> scan = Observable.just(1,2,3,4,5).scan(new Func2<Integer, Integer, Integer>(){
            @Override
            public Integer call(Integer t1, Integer t2) {
                System.err.println("t1="+t1+"--t2="+t2);
                return t2+2;
            }

        });
        Subscriber subscriber = new Subscriber<T>(){
            @Override
            public void onStart() {
                System.err.println("onStart: ");
            }

            @Override
            public void onCompleted() {
                System.err.println("Completed!");
            }

            @Override
            public void onError(Throwable thrwbl) {
                System.err.println("Error!"+thrwbl.getMessage());
            }

            @Override
            public void onNext(T s) {
                System.err.println("Item: " +s.getClass()+"="+ s);
            }

        };
scan.subscribe(subscriber);

输出:

onStart: 
Item: class java.lang.Integer=1
t1=1--t2=2
Item: class java.lang.Integer=4
t1=4--t2=3
Item: class java.lang.Integer=5
t1=5--t2=4
Item: class java.lang.Integer=6
t1=6--t2=5
Item: class java.lang.Integer=7