两分钟了解ReactiveX

两分钟了解ReactiveX
type
status
date
slug
summary
tags
category
icon
password
💡
可能在之前,你就已经看过这篇《响应式编程的入门》。什么?太长?好吧,这都没关系,Rx并不难,你甚至可以自己实现一个这样的框架。
知道数组吧?你当然知道,这就是:
如果说这是一个非可变数组,但需要移除所有的奇数,你会怎样做呢?可能会是这样:
直到现在也没什么新鲜东西,这在underscore.js, ECMAScript 5.1, LINQ, Guava, 等等之中,早已司空见惯。这些都是来自于函数式的编程范型。

再来想想带来坐标位置数据的点击事件。如果画一条时间线,它们看起来应该是这样。
notion image
是的,这是一个事件流,它有一妮称,叫 “Observable”。
这些点击事件,都来自于鼠标,意味着整个事件流都是
不可变的
。事件被触发后,我们没有办法对事件进行添加或删除。 但我如果只是关心
的事件呢?能不能创建一个像数组一样的新的流,再对其进行过滤呢?
notion image
notion image
click events filted line
非可变数组和Observables有什么区别呢?其实不多,两个都可以使用map, filter, reduce等高阶函数。在Observables中,你也可以使用merge, delay, concat, buffer, distinct, first, last, zip, startWith, window, takeUntil, skip, scan, sample, amb, n, flatMap等函数。

想像一下

异步的非可变数组Rx可以说是操作事件的underscore.js。但等一下,什么是事件?在你的程序中,难道不是绝大多数代码都是事件吗? 程序启动事件,API响应事件,键盘事件,设备休眠事件等等。
基本上,所有东西都可以是事件流。所需要的只是要适当地进行排列组合。
这就是Rx的两分钟。
 
上一篇
Overview of ES6 初窥ES6
下一篇
Functional Programming in JavaScript
Loading...
发布于 2015-5-8
修改于 2024-10-25
最新发布
解决宝塔面板反向代理后无法显示真实IP的问题
2024-12-20
群晖Docker安装部署自托管AppFlowy笔记应用
2024-12-14
PostgreSQL配置Fail2Ban防暴力破解
2024-11-19
PVE配置Fail2Ban防暴力破解Web登录与SSH连接
2024-11-19
单臂路由|N1盒子(OpenWRT)单线多拨实现网速叠加
2024-11-18
关于Sass 你需要知道的 Interpolation(插值)
2024-11-17