动态重新路由和与Mostjs的循环依赖

动态重新路由和与Mostjs的循环依赖

问题描述:

很明显,xstream,使用两种方法addListenerremoveListener,能够动态地重新路由流(改变它们的源和汇)。我看不出与大多数人相当。大多数只会让你布置流的路由吗?如果是这样,这是什么让大多数j优化这种优越的表现?动态重新路由和与Mostjs的循环依赖

此外,xstream使用imitate方法,使其具有循环依赖关系。有没有办法通过mostjs实现循环依赖?

有在most.js许多功能上都一个SourceSink,例如map(),其将所有的事件流中的操作,通过消耗事件充当Sink,并且作为Source生产时在对它们应用函数之后新的事件值。 observe()是一种特定种类的Sink消耗事件的示例,并将它们传递给您提供的函数。

Most.js Streams在使用它们之前,通过使用“终端”组合器之一observe,drainreduce不会生效。当您拨打其中一个电话号码时,Stream会在Source-Sink链中将信号发送到链的最开始处的Source。该制作人Source将开始制作活动。

然后事件通过一个简单的方法调用从SourceSource-Sink链同步传播。

因此,您可以将自己的“听众”功能提供给可以转换事件的map

有很多因素对most.js的表现有所贡献。

简单调用堆栈事件传播架构,加上吊装 try/catch出组合子实现的两个最早 和最大的性能改进。

Most.js根据 代数等价自动执行其他几种优化。一个相对众所周知的例子是将 多个map操作,例如, map(g, map(f, stream)),通过在fg上执行函数组合,将其转换为 单个map

操作也结合了多种filter操作,多 merge操作,多takeskip,等等。这些优化减少了从生产者到消费者传播事件所需的方法调用次数。

See this interview with Brian Cavalier

大多数。js本身不处理循环依赖,但它完全可以使用most-proxyMotorcycle这样做是为了在其run包中创建其循环。

你见过这个问题吗xstream.jsimitatemost.jshttps://github.com/cujojs/most/issues/308