看了一下,学习了一下,感觉很刁,但是不知道怎么使用,大佬们,指导一下,这个使用场景是什么
1
catch 2020-09-17 20:15:56 +08:00 via iPhone 1
装逼用
|
3
zhouyg 2020-09-17 21:22:56 +08:00
一把屠龙刀
|
4
xrr2016 2020-09-17 21:25:14 +08:00
主要是用来处理异步数据操作吧,不过感觉设计太复杂,不用😝
|
5
sunjourney 2020-09-17 21:31:35 +08:00
rxjs 什么业务场景都能胜任,被形容成屠龙刀,也是服了
|
6
peterjose 2020-09-17 21:34:20 +08:00
搞 websocket
|
7
tsvico 2020-09-17 21:35:21 +08:00 via Android
经常用来订阅异步消息
|
8
ddup 2020-09-17 21:49:29 +08:00
处理复杂业务用 RxJS:太方便了,实在是太方便了。
|
9
des 2020-09-17 21:56:56 +08:00
在 websocket 里面用 rxjs 简直不要太舒服
|
10
chihiro2014 2020-09-17 22:37:26 +08:00
RSocket
|
11
ochatokori 2020-09-17 23:02:44 +08:00 via Android
angular 自带,懒得 toPromise 就用了
|
12
wunonglin 2020-09-17 23:22:55 +08:00
真的香,现在完全离不开
|
13
Zchary 2020-09-18 02:21:29 +08:00 via iPhone
RxJS rules ! Ng 用来多请求,数据流控制很舒服
|
14
YYYeung 2020-09-18 02:24:15 +08:00
回调地狱杀手
|
15
laike9m 2020-09-18 03:04:46 +08:00 via Android
学了很多次都没学懂,可能是我比较笨。。😔
|
16
zjsxwc 2020-09-18 07:40:54 +08:00 via Android
最大的优势是,把事件行为数据化,
比如把用户操作行为、异步回调都变成统一的流化数据 |
17
siweipancc 2020-09-18 09:05:08 +08:00 via iPhone
写前端代码没有 rxjs 跟吃了屎一样,来自一个后端的怨念
|
18
rrfeng 2020-09-18 09:56:30 +08:00
Angular 官方推荐,试了一下确实很好用。
比如之前有这么一个场景: 一个 timer 定期轮询数据并更新页面,同时可能有几个按钮也会触发这个更新动作。怎么确保这两种触发形式优雅的合作? |
19
leemove 2020-09-18 10:00:47 +08:00
只在 angular 项目里用用,其他项目都没有引入过。虽然他确实好用,但是 js 原生处理异步方式也很多了,async await promise 出来之前他可能是无可替代的。
|
20
dany813 2020-09-18 10:08:50 +08:00
哎,在 react 中一直么用过
|
21
wangxiaoaer 2020-09-18 10:11:26 +08:00 via iPhone
@ddup 举个例子?不是抬杠。
|
25
soulmt OP @siweipancc 后端有各种消息,大量的数据处理,前端这边就比较少了吧,前端我更多的是业务逻辑上的,
|
26
soulmt OP @rrfeng 这确实也是个场景,不同的 入口或者流程但是 最终的结果是一致的,并且互相不能影响如果用 js 的话可能要维护各种状态来做控制了
|
27
soulmt OP @leemove 害 难怪我不知道怎么用 你们用的 sockect angular 我都没用过,只是最近在写 cli 的时候遇到了 rx 然后发现很吊,想运用到业务中,发现好像没什么容身之处,可能是我对 rxjs 没有深刻认知导致的。 目前的技术栈 react 。
|
28
wunonglin 2020-09-18 12:08:30 +08:00
@soulmt #24 angular 。在能用 rxjs 的时候就基本不会用 promise 了,流式异步简直不要太爽
|
31
gzf6 2020-09-18 13:45:55 +08:00
rx 不光是 rxjs 了,这种模式已经有好多语言的实现了,可以了解下
|
32
ddup 2020-09-18 14:12:10 +08:00
@wangxiaoaer #21 用 RxJs 的话,需要配合 TypeScript 有完善的智能提示,这样体验更好,我用的是 Angular,不过即使是 Vue 也是一样可以很方便的和 RxJs 结合的。
以前对 RxJs 了解有限,因为业务复用杂想应用下 RxJs 看到底有没有那么香,学起来确实要费点劲的,因为 RxJs 理念很不一样,文档也很学术,例子不接地气,担是学成会用之后,爱不释手,写起来感觉很爽,相见恨晚。 例子的话,说个场景,比如有个功能同时有以下需要: 多个异步结果合并(且其中某个异步出错则 fallback 不终止执行) 延迟执行 出错重试 异常后根据条件判断是抛出异常还是 fallback 各种异步请求依赖和嵌套,请求数据二次加工处理 RxJs 可以清晰优雅的实现这个功能。 |
33
qwerthhusn 2020-09-18 14:23:23 +08:00
就是 async await 出来之前
RxJS 可以很好的解决 Callback Hell |
35
soulmt OP @qwerthhusn 是的 es6 提供了很多方法用 promise+各种函数链式调用,也可以写的很舒畅。
|
36
soulmt OP @ddup
多个异步结果合并 Promise 在新的 api 中也支持了。 延迟执行 延迟执行 js 也可以,在 promise 中间加一个延迟的中间件就可以做到, 异常后根据条件判断是抛出异常还是 这个也可以,promise catch 和 then 可以决定 让这个 promise 走异常还是继续 then 感觉你说的 promise 好像都可以实现,不知道是否可以说说它和 promise 对异步处理的优劣点 |
37
crclz 2020-09-19 09:27:17 +08:00
@laike9m 不是你比较笨,而是你压根没有想要把 rxjs 用于开发(或者制作一个 demo )。只有当你逼迫自己的时候,你才能够掌握 rxjs 。
@soulmt 这个不是 angular 的事情,所有框架都可以受益于 rxjs 。关于应用场景,我举一个例子: 你有一个搜索栏,搜索学生信息。这个搜索功能提供 3 个 filter:关键词 、学生性别、页码 。 这个时候,如果你想要任何一个筛选条件改变时,都重新获取数据,rxjs 只需要用一个 combineLatest 操作符。 如果你想要当关键词和分页器页码改变时,才重新获取数据,你只需要 combineLatest 关键词和分页器页码,然后再 withLatest 学生性别筛选输入。 rxjs 有很多操作符,每一个操作符都对应着常见的流的组合行为,每一个操作符都是由很多行代码写成的。 所以,简单来说,rxjs 每一个操作符都能够替代你十行甚至几十行代码。这个也可以视作相对于 async/await 的优点。 --- 最后:rx 和 rxjs 来自于微软,来自于.Net ,来自于 System.Reactive.Linq. Shout out to Microsoft! |