【译】两分钟介绍Rx

原网址 https://medium.com/@andrestaltz/2-minute-introduction-to-rx-24c8ca793877

你可以看我稍早前写的 教程。觉得太长?好吧,Rx并不是太难学习,你可以访问它的官网 自己学习。

你知道数组吗?当然。如下:

[14,9,5,2,10,13,4]

如果要求你从这个固定数组中过滤掉所有奇数,该如何做?常用方法:

[ 14, 9, 5, 2, 10, 13, 4 ]
filter( (x) -> x % 2 == 0 )
[ 14, 2, 10, 4 ]

到目前为止没有什么新东西。在 underscore.jsECMAScriptLINQGuava ,等语言中有自带数组函数方
法。


现在让我们思考下多次单击事件后获取的坐标信息。在时间轴上画出来,大概如下图:在这里插入图片描述
上图可以表示为一个 事件流(stream of events),或可称为“可观察对象(Observable)”

这些单击事件来自鼠标,所以事件流可以看做是一个固定值,因此,在定义以后这个值是不可变或者删除的。

但是,如果我只想要点击事件中 x<250的值呢?我们可以像上面所说,像处理数组那样处理点
击时间吗?如下图:

在这里插入图片描述

filter( (event) -> event.x < 250 )

在这里插入图片描述

那么 固定数组和可观察对象(Observable)有什么不同吗?并没有多不同。它们两者都可以用 map, filter, reduce。对于 可观察对象(Observable),你也可以用 merge, delay, concat, buffer, distinct, first, last, zip, startWith, window, takeUntil, skip, scan, sample, amb, join, flatMap.

可以把它看做一个异步不可变数组

Rx是一个事件型(events)的类似underscore.js的实用库。但是等等,什么是事件(event)?应用程序中的大多数内容难道不能是事件吗?

“已起用的程序”,“API调用”,“敲击键盘”,“invalidateLayout()”,“设备休眠”,等等,都是事件。

实际上任何的事情都是事件流(stream of events)。这只是组合和正确组合它们的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值