摘要:变换操作摘抄自文档中文翻译对序列的每一项都应用一个函数来变换发射的数据序列将发射的数据集合变换为集合,然后将这些发射的数据平坦化的放进一个多带带的对发射的每一项数据应用一个函数,然后按顺序依次发射每一个值将分拆为集合,将原始发射的数据按分组,
变换操作
摘抄自Reactive X文档中文翻译
map 对序列的每一项都应用一个函数来变换Observable发射的数据序列
flatmap 将Observable发射的数据集合变换为Observables集合,然后将这些Observable发射的数据平坦化的放进一个多带带的Observable
scan 对Observable发射的每一项数据应用一个函数,然后按顺序依次发射每一个值
groupBy 将Observable分拆为Observable集合,将原始Observable发射的数据按Key分组,每一个Observable发射一组不同的数据
buffer 它定期从Observable收集数据到一个集合,然后把这些数据集合打包发射,而不是一次发射一个
window 定期将来自Observable的数据分拆成一些Observable窗口,然后发射这些窗口,而不是每次发射一项
mapmap 对序列的每一项都应用一个函数来变换Observable发射的数据序列
//比如将每个字符串拼接上 from magicer String[] str = {"winter is coming","the king in the north"}; Observable.from(str).map(new Func1flatmap() { @Override public String call(String s) { return s+" from magicer"; } }).subscribe(new Action1 () { @Override public void call(String s) { Log.i(TAG, "call: "+s); } }); }
flatmap 将Observable发射的数据集合变换为Observables集合,然后将这些Observable发射的数据平坦化的放进一个多带带的Observable
//这里的nickName是个ListscanObservable.from(mStudents).flatMap(new Func1 >() { @Override public Observable call(Student student) { return Observable.from(student.getNickNames()); } }).subscribe(new Action1 () { @Override public void call(String s) { Log.i(TAG, "call: "+s); } });
scan 对Observable发射的每一项数据应用一个函数,然后按顺序依次发射每一个值
Observable.just(1,2,3,4,5).scan(new Func2groupby() { @Override public Integer call(Integer integer, Integer integer2) { return integer+integer2; } }).subscribe(new Action1 () { @Override public void call(Integer integer) { Log.i(TAG, "call: "+integer); } });
groupBy 将Observable分拆为Observable集合,将原始Observable发射的数据按Key分组,每一个Observable发射一组不同的数据
Observable.interval(1, TimeUnit.SECONDS).groupBy(new Func1buffer() { @Override public Long call(Long aLong) { return aLong %2; } }).subscribe(new Action1 >() { @Override public void call(final GroupedObservable result) { result.subscribe(new Action1 () { @Override public void call(Long aLong) { Log.i(TAG, "groupby call: "+aLong+" getKey:"+result.getKey()); } }); } });
buffer 它定期从Observable收集数据到一个集合,然后把这些数据集合打包发射,而不是一次发射一个
Observable.interval(1,TimeUnit.SECONDS) .buffer(3,TimeUnit.SECONDS) .subscribe(new Action1window>() { @Override public void call(List
longs) { Log.i(TAG, "call: "+longs); } });
window 定期将来自Observable的数据分拆成一些Observable窗口,然后发射这些窗口,而不是每次发射一项
Window和Buffer类似,但不是发射来自原始Observable的数据包,它发射的是Observables,这些Observables中的每一个都发射原始Observable数据的一个子集,最后发射一个onCompleted通知。
Observable.interval(1,TimeUnit.SECONDS) .window(3,TimeUnit.SECONDS) .subscribe(new Action1>() { @Override public void call(final Observable longObservable) { longObservable.subscribe(new Action1 () { @Override public void call(Long aLong) { Log.i(TAG, "call: "+aLong); } }); } });
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/13540.html
摘要:最近开始转移到掘金。要解决的问题支持切换网络请求地址,例如实现掘金前言以前在项目中使用,来进行事件通知与订阅。因此精华翻译掘金本人学习完了后,将值得重点注意的变化进行了翻译和归纳,适合正在使用的同学快速了解如果错误欢迎批评指正。 收藏安卓开发中非常实用优秀的库! 有图有真相! - Android - 掘金本来是打算收藏工具类的,但转念一想,已经有这么多优秀的库了,就没必要再去重复造轮子...
摘要:来吧,我们看看不用单个线程池,如何实现队列。也就是说,只有在上传成功时,继续执行下一个。最终执行的如下图好了,混乱的总算撸成串了。 前言 前几天和Stay(有心课堂创始人)讨论了一个rxjava场景,觉得很有意思,这里也和大家分享下。通过还原一个真实的开发过程,来感受下rxjava的便利之处。 不认识Stay的可以看看他的博客吧:http://www.jianshu.com/users...
摘要:每周都会举行嘉宾分享,话题讨论等活动。本期,我们邀请了腾讯开发工程师戴俊,为大家分享基于的一种实现。分享内容简介是一个实现响应式编程的库,让异步事件以序列的形式组织。目前在腾讯动漫主要负责端的开发工作。接口的第二个作用是可以用来切换实现。 本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bfe... Dev Cl...
摘要:观察者模式面向的需求是对象观察者对对象被观察者的某种变化高度敏感,需要在变化的一瞬间做出反应。规定,当不会再有新的发出时,需要触发方法作为标志。在事件处理过程中出异常时,会被触发,同时队列自动终止,不允许再有事件发出。 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使...
阅读 3668·2021-11-23 10:09
阅读 1127·2021-11-23 09:51
阅读 2741·2021-11-23 09:51
阅读 1359·2021-09-07 09:59
阅读 2133·2019-08-30 15:55
阅读 2068·2019-08-30 15:55
阅读 2818·2019-08-30 15:52
阅读 2932·2019-08-27 14:27