为什么会有 rxjs 这种库?

2018-12-27 16:15:03 +08:00
 yhvictor

别人推荐我看一下 reactiveX,于是看了下,一看 operator 真是不知道多少个: https://www.learnrxjs.io/operators/

相比较之下,guava concurrency 的 operator 就少得多了(一半以上还是因为重载): https://google.github.io/guava/releases/21.0/api/docs/com/google/common/util/concurrent/Futures.html

所以,rxjs 这东西有什么好处呢?为什么能火呢? 以及 javascript 有没有类似 listenable future 的类或者库呢?

9374 次点击
所在节点    JavaScript
30 条回复
JesseHeisenberg
2018-12-27 16:22:10 +08:00
当你用起来就能感受到丝滑般的流畅,事件流在管理着各种跨模块的状态,给每个单独的模块解耦合,想想就激动。
lrz0lrz
2018-12-27 16:22:24 +08:00
1、rxjs 不火
2、有 rxjs 是因为有 rxjava 等其他语言的 ReactiveX 库
3、listenable future 是啥?不过 rxjs 的竞品有不少,或许有楼主想要的
jera
2018-12-27 16:33:21 +08:00
1. rxjs 不火。
2. rx 好像起源于 linq 的扩展。
3. operator 多是因为官方帮你实现了他认为有必要实现的,实质上任何人都可以自己实现 operator 用 Observable#lift 方法挂上去。
4. 不懂 java,你说的 listenable future 应该是 Observable 或者 Observable 的订阅。
jera
2018-12-27 16:34:17 +08:00
对了,你应该对比 RxJAVA 而不是 RxJS。
jimrok
2018-12-27 16:37:09 +08:00
学习曲线其实挺高的,使用异步事件模式来组织业务逻辑是非常难的,代码也非常难维护。因为业务逻辑非常依赖一个上下文状态,但在流的方式下,上下文的状态数据会随着流在处理环节中流动,你只需面对流中的上下文信息就好了。而且单向数据流避免了并发引起的状态混乱。
akatquas
2018-12-27 16:37:45 +08:00
时间流的思想高的不知道哪里去了
Yiki
2018-12-27 16:39:42 +08:00
用过一点,懂了一点,觉得学起来蛮吃力是真的
但好像是挺好用的……
wly19960911
2018-12-27 16:45:44 +08:00
@jimrok #5 那我们能不能把数据 copy 一份,然后接受流的处理,之后 return 赋值给 this 的变量,这样的话避免掉使用 this,其实我一直很忌讳使用 this 的变量,或者说直接修改所需要的业务数据。我好奇这种情况适用性广不广?
zjsxwc
2018-12-27 17:00:32 +08:00
等价于有了微积分 我们为什么要学傅立叶变换
jimrok
2018-12-27 17:51:48 +08:00
@wly19960911 你说的对,reactive 就是要求数据不变性,函数不能产生副作用,而且要求数据单向流动。你可以想像成在汽车流水线上工作,不是一哄而上的进行修改。
kutata
2018-12-27 18:04:50 +08:00
歪个楼,有人能告诉我 graphQL 是什么吗…?😹😹😹
youxiachai
2018-12-27 18:08:18 +08:00
rxjs 什么是火了....
drydiy
2018-12-27 19:06:10 +08:00
@kutata 别问,学就对了。
66beta
2018-12-27 19:08:53 +08:00
@kutata 前端不需要后端系列
PALELESS
2018-12-27 19:16:47 +08:00
xstream 了解一下 与 cyclejs 配套使用无敌 不过说实话流式编程感觉也就是开拓思维吧 暂时正式项目很少见到 会的人不是很多
zhwithsweet
2018-12-27 19:17:33 +08:00
1.rxjs 本身是基于可观测,维护一个稳定的数据流,dom 操作,网络 I/O 等等都归结为副作用,有专门的订阅者执行。数据可观测,可控。
2.rxjs 不火。
3.有,比如 cycle.js 的底层依赖 xsteam.js 。(本人用过,用来解耦 jsbridge 和 webview 的交互
mafeifan
2018-12-27 19:31:03 +08:00
很多人使用 rxjs 因为用的 angular。在 angular 里很多地方要用到。处理起来也是挺方便的。
azh7138m
2018-12-27 22:29:35 +08:00
@PALELESS 石墨文档好像用的很多

看上去很好,就是不知道实际使用成本大不大
grewer
2018-12-27 22:33:22 +08:00
其实我感觉不是太需要 如果只是为了使用而去使用 那还是罢了
先了解一下使用场景 碰到了特殊问题再去考虑吧
bluzz
2018-12-28 02:20:43 +08:00
我从 rxjava 开始用的,后来搞 ios 就用 rxswift,重要是思想是一致的,上手就很快

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/521571

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX