很明显,使用addListener和removeListener这两种方法,xstream能够动态地重新路由流(更改它们的源和接收器)。我看不出与大多数人相比。大多数情况下,只允许您安排一次流的路由吗?如果是这样的话,这种静态特性是否允许大多数is为这种优越的性能进行优化?
此外,xstream使用了一个imitate方法,它允许它具有循环依赖关系。是否有任何方法来实现循环依赖与大多数?
发布于 2017-08-26 20:49:13
most.js中有许多函数同时对Source和Sink进行操作,例如,转换流中所有事件的map()通过使用事件充当Sink,在应用函数之后生成新的事件值时充当Source。observe()是一个特定类型的Sink的示例,它使用事件并将它们传递给您提供的函数。
Most.js Streams在使用“终端”组合子之一observe、drain或reduce之前不活动。当您调用其中一个时,Stream将在Source-Sink链中的一个信号发送给该链的最开始的Source。然后,生产者Source将开始生成事件。
然后,通过简单的方法调用从Source通过Source-Sink链同步传播事件。
因此,您可以向map提供自己的“侦听器”函数,该函数将转换事件。
有许多因素影响了Mst.js的性能。
简单的调用堆栈事件传播体系结构,加上将
try/catch从combinator实现中提升出来,是最早和最大的性能改进之一。 Most.js基于代数等价物自动执行其他几个优化。一个相对著名的例子是通过在map和g上进行函数组合,将多个map操作(如map(g, map(f, stream)))组合成单个map。 该操作还结合了多个filter操作、多个merge操作、多个take和skip等操作。这些优化减少了将事件从生产者传播到使用者所需的方法调用的数量。
Most.js本身不处理循环依赖关系,但完全可以使用most-proxy。摩托车这样做是为了在它的run包中创建它的循环。
发布于 2017-08-08 22:58:50
你看过关于xstream.js imitate in most.jshttps://github.com/cujojs/most/issues/308的问题吗?
https://stackoverflow.com/questions/45036051
复制相似问题