Cycle.js学习笔记6--合流
更新日期:
因为对Rxjs的好感玩上了Cycle.js,《Cycle.js学习笔记》系列用于记录使用该框架的一些笔记。
本文介绍xStream的合流处理,并手动实现其中的combine方法。
合流
xStream
xStream和rxjs类似,都是reactive programming在js上的实现。
xStream比较轻量级一点,特别为Cycle.js做了兼容。
xStream拥有四种基础类型:
流(
Stream
):一个拥有多个事件监听器的事件发射器。监听器(
Listener
):一个带有next
,error
, 和complete
其中1-3个函数的对象。
1 | var listener = { |
- 发射器(
Producer
):发射通过流传播的事件。
1 | var producer = { |
- 记忆流(
MemoryStream
):可用于保存最近一次数据。
常用工厂函数:create
, from
, of
, merge
, combine
等。
常用方法和操作:addListener
, removeListener
, subscribe
, map
, mapTo
, filter
, startWith
等。
更多说明可以查看官方文档,虽然上面说明也不是很详细。
xstream合流
这里面有两个工厂方法:merge
和 combine
。
merge(stream1, stream2)
该方法会将多个流合在一起,同步更新流。
1 | --1----2-----3--------4--- |
combine(stream1, stream2)
该方法会将多个输入流合入,并始终返回各个流上一次的合流。
1 | --1----2-----3--------4--- |
使用方式:
1 | const stream1 = xs.of(1); |
combine流的实现
这里,本骚年开始的时候没有发现combine
方法合流,一直用的merge
,然后自己弄了个实现方式,直至看到了combine
[捂脸]。
既然写都写了,可以分享一下,不知道是不是combine
的实现,但最后功能使用是一样的:
1 | import xs from 'xstream'; |
当然,这个功能最后使用的时候,有个跟combine
不一样的地方:
1 | --1----2-----3--------4--- |
也就是说,第一次单流流动的时候也是有更新和输出的。
结束语
这节主要简单介绍了xStream,以及合流相关方法和其中的一些实现探索。
目前还没有解决第四节的问题,但是距离也一步步跟进了,我们慢慢深入探索,一些浅显的东西也便会出来了。
码生艰难,写文不易,给我家猪囤点猫粮了喵~
查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢
如果你想要关注日常生活中的我,欢迎关注“牧羊的猪”公众号噢