Rxjava3 数学运算操作符

通过具体的示例,学习每个操作符的用法~

1.Concat

Concat运算符将多个Observable的输出连接起来,使它们像单个Observable一样工作。第一个Observble发出所有项目后第二个Observable开始发送事件,直到所有Observable的事件都发送完。

示例:

Observable.concat(Observable.just(1,2,3),Observable.just(4,5,6))
	.subscribe(object :Observer<Int>{
		override fun onSubscribe(d: Disposable) {
			Log.e(TAG, "---------onSubscribe---------")
		}
		override fun onNext(t: Int) {
			Log.e(TAG, "---------onNext------$t---")
		}
		override fun onError(e: Throwable) {
			Log.e(TAG, "---------onError---------")
		}
		override fun onComplete() {
			Log.e(TAG, "---------onComplete---------")
		}
	})

输出结果:

2023-01-11 11:18:36.252 E/MathOperator: ---------onSubscribe---------
2023-01-11 11:18:36.252 E/MathOperator: ---------onNext------1---
2023-01-11 11:18:36.253 E/MathOperator: ---------onNext------2---
2023-01-11 11:18:36.253 E/MathOperator: ---------onNext------3---
2023-01-11 11:18:36.253 E/MathOperator: ---------onNext------4---
2023-01-11 11:18:36.253 E/MathOperator: ---------onNext------5---
2023-01-11 11:18:36.253 E/MathOperator: ---------onNext------6---
2023-01-11 11:18:36.253 E/MathOperator: ---------onComplete---------

2. Count

计算源Observable发出的项目数,并将该值作为事项发出。

示例:

Observable.just(2,30,22,5,60,1)
	.count()
	.subscribe(object :SingleObserver<Long>{
		override fun onSubscribe(d: Disposable) {
			Log.e(TAG, "---------onSubscribe---------")
		}

		override fun onSuccess(t: Long) {
			Log.e(TAG, "---------onSuccess-------$t--")
		}

		override fun onError(e: Throwable) {
			Log.e(TAG, "---------onError---------")
		}
	})

输出结果:

2023-01-11 11:25:01.091 E/MathOperator: ---------onSubscribe---------
2023-01-11 11:25:01.091 E/MathOperator: ---------onSuccess-------6--

 3.Reduce

Reduce运算符将函数应用于源Observable发出的第一个项,然后将函数的结果与源Observble发出的第二个项一起反馈给函数,继续此过程,直到源Observable发出其最终项并完成,然后从Reduce返回的Observable将发出函数返回的最终值。

示例:

Observable.just(1,2,3,4,5)
	.reduce(object:BiFunction<Int,Int,Int>{
		override fun apply(t1: Int, t2: Int): Int {
			return t1+t2
		}
	})
	.subscribe(object:MaybeObserver<Int>{
		override fun onSubscribe(d: Disposable) {
			Log.e(TAG, "---------onSubscribe---------")
		}
		override fun onSuccess(t: Int) {
			Log.e(TAG, "---------onSuccess-------$t--")
		}
		override fun onError(e: Throwable) {
			Log.e(TAG, "---------onError---------")
		}
		override fun onComplete() {
			Log.e(TAG, "---------onComplete---------")
		}

	})

输出结果:

2023-01-11 11:28:18.057 E/MathOperator: ---------onSubscribe---------
2023-01-11 11:28:18.058 E/MathOperator: ---------onSuccess-------15--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值