技术解析

为什么会有 rxjs 这种库?
0
2021-09-02 01:07:43
idczone

别人推荐我看一下 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 的类或者库呢?


当你用起来就能感受到丝滑般的流畅,事件流在管理着各种跨模块的状态,给每个单独的模块解耦合,想想就激动。

1、rxjs 不火
2、有 rxjs 是因为有 rxjava 等其他语言的 ReactiveX 库
3、listenable future 是啥?不过 rxjs 的竞品有不少,或许有楼主想要的

1. rxjs 不火。
2. rx 好像起源于 linq 的扩展。
3. operator 多是因为官方帮你实现了他认为有必要实现的,实质上任何人都可以自己实现 operator 用 Observable方法挂上去。
4. 不懂 java,你说的 listenable future 应该是 Observable 或者 Observable 的订阅。

对了,你应该对比 RxJAVA 而不是 RxJS。

学习曲线其实挺高的,使用异步事件模式来组织业务逻辑是非常难的,代码也非常难维护。因为业务逻辑非常依赖一个上下文状态,但在流的方式下,上下文的状态数据会随着流在处理环节中流动,你只需面对流中的上下文信息就好了。而且单向数据流避免了并发引起的状态混乱。

时间流的思想高的不知道哪里去了

用过一点,懂了一点,觉得学起来蛮吃力是真的
但好像是挺好用的……

那我们能不能把数据 copy 一份,然后接受流的处理,之后 return 赋值给 this 的变量,这样的话避免掉使用 this,其实我一直很忌讳使用 this 的变量,或者说直接修改所需要的业务数据。我好奇这种情况适用性广不广?

等价于有了微积分 我们为什么要学傅立叶变换

你说的对,reactive 就是要求数据不变性,函数不能产生副作用,而且要求数据单向流动。你可以想像成在汽车流水线上工作,不是一哄而上的进行修改。

歪个楼,有人能告诉我 graphQL 是什么吗…?
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服