zoukankan      html  css  js  c++  java
  • [RxJava^Android]项目经验分享 --- 递归实现

    介绍一下业务逻辑:获取接口数据,根据接口内容判断是否需要继续获取数据。
    本文使用递归思路,通过RxJava来实现此功能,获取数据的Observable直接用模拟的Observable.just()替代。关键点使用concatMapconcatWith操作符

    代码块

    public Observable<Integer> getInt(int i) {
    	return Observable.just(i).concatMap(integer -> {
    		if (integer == 10) {  //判断条件
    			return Observable.just(10); //发射数据
    		} else {
    			return Observable
    					.just(integer)
    					.concatWith(getInt(integer + 1));
    					//连接发射
    		}
    	});
    }
    
    public void testMain() {
            getInt(0).subscribe(getSubscriber());
    }
    
    private Subscriber<Object> getSubscriber() {
    	return new Subscriber<Object>() {
    		@Override
    		public void onCompleted() {
    			LogUtils.d("onCompleted");
    		}
    		
    		@Override
    		public void onError(Throwable e) {
    	        LogUtils.d("onError : " + e.toString());
    	    }
    	    
    		@Override
    		public void onNext(Object o) {
    			LogUtils.d("onNext : " + o);
    		}
    	};
    }
    

    输出结果

    01-05 10:42:13.257 24959-24975/? D/LogUtils: onNext : 0
    01-05 10:42:13.257 24959-24975/? D/LogUtils: onNext : 1
    01-05 10:42:13.257 24959-24975/? D/LogUtils: onNext : 2
    01-05 10:42:13.257 24959-24975/? D/LogUtils: onNext : 3
    01-05 10:42:13.257 24959-24975/? D/LogUtils: onNext : 4
    01-05 10:42:13.258 24959-24975/? D/LogUtils: onNext : 5
    01-05 10:42:13.258 24959-24975/? D/LogUtils: onNext : 6
    01-05 10:42:13.258 24959-24975/? D/LogUtils: onNext : 7
    01-05 10:42:13.258 24959-24975/? D/LogUtils: onNext : 8
    01-05 10:42:13.258 24959-24975/? D/LogUtils: onNext : 9
    01-05 10:42:13.258 24959-24975/? D/LogUtils: onNext : 10
    01-05 10:42:13.258 24959-24975/? D/LogUtils: onCompleted
    
  • 相关阅读:
    vue-Prop
    C#四舍五入的方法
    设计模式-建造者模式
    vue-解决Vue打包上线之后部分CSS不生效的问题
    vue项目兼容IE浏览器
    html-box-sizing
    MSSQLSERVER执行计划详解
    white-space和word-wrap和word-break所表示的换行和不换行的区别
    JS设置cookie、读取cookie、删除cookie
    windows7 telnet服务开启和登录授权
  • 原文地址:https://www.cnblogs.com/assassin-l/p/5101549.html
Copyright © 2011-2022 走看看