动态重新路由和与Mostjs的循环依赖
很明显,xstream,使用两种方法addListener
和removeListener
,能够动态地重新路由流(改变它们的源和汇)。我看不出与大多数人相当。大多数只会让你布置流的路由吗?如果是这样,这是什么让大多数j优化这种优越的表现?动态重新路由和与Mostjs的循环依赖
此外,xstream使用imitate
方法,使其具有循环依赖关系。有没有办法通过mostjs实现循环依赖?
有在most.js许多功能上都一个Source
和Sink
,例如map()
,其将所有的事件流中的操作,通过消耗事件充当Sink
,并且作为Source
生产时在对它们应用函数之后新的事件值。 observe()
是一种特定种类的Sink
消耗事件的示例,并将它们传递给您提供的函数。
Most.js Streams
在使用它们之前,通过使用“终端”组合器之一observe
,drain
或reduce
不会生效。当您拨打其中一个电话号码时,Stream
会在Source-Sink
链中将信号发送到链的最开始处的Source
。该制作人Source
将开始制作活动。
然后事件通过一个简单的方法调用从Source
到Source-Sink
链同步传播。
因此,您可以将自己的“听众”功能提供给可以转换事件的map
。
有很多因素对most.js的表现有所贡献。
简单调用堆栈事件传播架构,加上吊装
try/catch
出组合子实现的两个最早 和最大的性能改进。Most.js根据 代数等价自动执行其他几种优化。一个相对众所周知的例子是将 多个
map
操作,例如,map(g, map(f, stream))
,通过在f
和g
上执行函数组合,将其转换为 单个map
。操作也结合了多种
filter
操作,多merge
操作,多take
和skip
,等等。这些优化减少了从生产者到消费者传播事件所需的方法调用次数。
See this interview with Brian Cavalier
大多数。js本身不处理循环依赖,但它完全可以使用most-proxy
。 Motorcycle这样做是为了在其run
包中创建其循环。