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
    
  • 相关阅读:
    JavaScript提供了哪些定时器
    谈谈对CSS盒子模型的理解
    我们来谈谈类的加载机制
    谈谈你对ThreadLocal的理解
    谈谈你对线程安全的理解?
    JDK提供的线程池有哪些?实际开发我们该怎么使用?
    Pytest系列(7)
    Pytest系列(6)
    Pytest系列(5)
    Pytest系列(4)
  • 原文地址:https://www.cnblogs.com/assassin-l/p/5101549.html
Copyright © 2011-2022 走看看