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
    
  • 相关阅读:
    Ubuntu18.04+CUDA+CUDNN+Pytorch环境配置
    VIM入门必读(转)
    简述C和C++的学习历程(转)
    队列
    排序实现
    十进制转二进制
    北邮1467二叉树题引起的思考
    计算机是如何启动的?
    c语言字符串操作实现
    北邮机试——huffman权值问题
  • 原文地址:https://www.cnblogs.com/assassin-l/p/5101549.html
Copyright © 2011-2022 走看看