我为什么不再推荐用 RxJava
开发者技术前线
共 5059字,需浏览 11分钟
· 2020-12-17
点击“开发者技术前线”,选择“星标?”
13:21 在看|星标|留言, 真爱
先讲讲历史
再聊聊异步
CompletableFuture
。还是后起之秀Kotlin上的Coroutine
,还有Android 上官方提供的LiveData
(这里说下:虽然本质上线程管理仍需用户自己,但是常见的比如Room数据库,Retrofit等等都有现成的LiveDataAdapter,实际上并不需要我们过多操心线程问题)。相比之下,RxJava优势并不那么明显,相反劣势却很突出。RxJava 门槛太高
投入高,收获少
你永远无法预测你同事的RxJava水平
RxJava的行为并不可预
map
和flatMap
的区别。还有flatMap
和concatMap
的区别。简单的讲map
是一对一,flatMap
是一对N的map然后在进行flatten
操作。还有些教程直接写出flatMap
无序,concatMap
有序。其实这些都只是简单总结,而实际的行为照着相差甚远。比如flatMap
在第一个error的时候会不会继续继续触发第二个?如果我想继续,将如何操作?再比如concatMap
在遇到第一个Observable
不会中断的时候,怎么继续下一个?RxJava太容易出错
with great power comes great responsibility. RxJava就是这样。在简单易用的同时他太容易被滥用了。我在实际工作中碰到的例子:
val stationId = "5bCP6Iqx"
val statoin:Observable= staionRepo.getStationById(stationId)
val stationLine:Observable= station.flatMap{station ->stationRepo.getLine(station)}
return Observable.merge(station.map{it.toUiModel()},
stationLine.map{it.toUiModel()})
val stationId = "5bCP6bif"
val statoin:Observable= staionRepo.getStationById(stationId)
return station.publish{selector ->
Observable.merge(selector.map{it.toUiModel()},
selector.flatMap{station -> stationRepo.getLine(station)}
.map{it.toUiModel()})
}
RxJava还是过于理想化了
RxJava起于异步,却也不单单是异步
LiveData
。而LiveData
无疑也是大量借鉴了RxJava的思想。总结:RxJava虽然优秀,但并不适合所有人
第五阶段项目实战、技术综合运用
END 前线推出学习交流群,加群一定要备注: 研究/工作方向+地点+学校/公司+昵称(如前端+上海+上交+可可) 根据格式备注,可更快被通过且邀请进群,领取一份专属学习礼包
扫码加我微信进群,内推和技术交流,大佬们零距离
历史推荐
5个常用的大数据可视化分析工具 弃用 Notepad++!还有 5 款更牛X的编辑器等你! 一顿骚操作!我将 SQL 耗时从 30248.271s 优化到 0.001s Vue 3.0 重磅发布!为什么开发者依旧偏爱 React? 好文点个在看吧!
评论
我看阿里的年终奖总算发了!
到4月底了,这两天看朋友圈,发现阿里的年终奖终于发了,问了问老同学,也从网上检索了不少信息,基本搞清楚了阿里今年的年终奖情况。近来来阿里一些集团对绩效等级做了较大的调整,以前的旧绩效系统中,绩效分为3.25、3.5、3.75、4和5五个等级,其中4和5是较高绩效等级,较少见。而且之前3.5绩效内部划
公子龙
0
老爸嘲讽我了,写破代码一年就挣十几万,他在工地带50个工人,一个月光人头费就3万,让我滚回去跟他干!
点击上方 "大数据肌肉猿"关注, 星标一起成长点击下方链接,进入高质量学习交流群今日更新| 1052个转型案例分享-大数据交流群来自:网络,侵删有个网友的父亲是做工程的,天天就嘲笑他,说他天天写着破代码有啥用,一年就拿个十多万的死工资,然后告诉他自己在工地里面带了50个工人,一个月能抽三万
程序源代码
0
我发现 Lombok的几个骚操作,哈哈好用
大家好,我是小富~前言本文不讨论对错,只讲骚操作。有的方法看看就好,知道可以这么用,但是否应用到实际开发中,那就仁者见仁,智者见智了。一万个读者就会有一万个哈姆雷特,希望这篇文章能够给您带来一些思考。耐心看完,你一定会有所收获。@onX例如 onConstructor, oMet
程序员内点事
0
BigDecimal 为什么可以保证精度不丢失?
来源:juejin.cn/post/7348709938023940136👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接
小哈学Java
0
聊一聊我最常关注的9个计算机视觉、自动驾驶、AI方向高质量圈子
随着计算机视觉(2D/3D)、SLAM、自动驾驶、AI技术的快速迭代更新,可落地的技术也成为人们争先学习的重点。这使得从业者对于最前沿技术的获取能力变得至关重要。微信公众号便是一个非常有效的前沿信息分享平台。这里给大家推荐9个最常打开的计算机视觉、自动驾驶、SLAM、机器学习和AI方向的优质公众号平
机器学习初学者
0
我想写几个专栏,欢迎大家投票
大家好,我是章北海前段时间更新了一个专栏,阅读和订阅都极不理想,看起来是没有做好调研啊。准备启动新的专栏更新计划了,我有几个选题,看大家更喜欢哪一个呢?欢迎投票,拜谢!
机器学习算法与Python实战
0
推荐 | 文本分析库cntext2.x使用手册
Tips: 公众号推送后内容只能更改一次,且只能改20字符。 如果内容出问题,或者想更新内容, 只能重复推送。 为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2024-04-27-cntext2x-usage-tutorial/cntext是大邓
大邓和他的Python
1
聊一聊我最关注的9个CV、SLAM、自动驾驶和AI圈子!
随着计算机视觉(2D/3D)、SLAM、自动驾驶、AI技术的快速迭代更新,可落地的技术也成为人们争先学习的重点。这使得从业者对于最前沿技术的获取能力变得至关重要。微信公众号便是一个非常有效的前沿信息分享平台。这里给大家推荐9个最常打开的计算机视觉、自动驾驶、SLAM、机器学习和AI方向的优质公众号平
3D视觉工坊
0