Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rx java Scala.js可观察查询_Rx Java_Rxjs_Scala.js - Fatal编程技术网

Rx java Scala.js可观察查询

Rx java Scala.js可观察查询,rx-java,rxjs,scala.js,Rx Java,Rxjs,Scala.js,到目前为止,我已经成功地使用Autowire和uPickle的组合在Spray路由器上进行Ajax调用——请参见示例。使用这种方法不会出现阻塞,因为返回到客户端/浏览器的结果是Scala的未来-基本上,浏览器应用程序将在适当的时候被告知结果,无论是失败还是“大项目列表”已经返回 我遇到的问题是,浏览器一次返回整个“大项目列表”结果。我想做一个查询,返回一个可观察的或流。这将允许用户在观看时动态填充UI。在这种情况下,每个项目返回时都会通知客户机(或者每返回几项,由客户机决定如何与数据“管道”交互

到目前为止,我已经成功地使用Autowire和uPickle的组合在Spray路由器上进行Ajax调用——请参见示例。使用这种方法不会出现阻塞,因为返回到客户端/浏览器的结果是Scala的未来-基本上,浏览器应用程序将在适当的时候被告知结果,无论是失败还是“大项目列表”已经返回

我遇到的问题是,浏览器一次返回整个“大项目列表”结果。我想做一个查询,返回一个可观察的或流。这将允许用户在观看时动态填充UI。在这种情况下,每个项目返回时都会通知客户机(或者每返回几项,由客户机决定如何与数据“管道”交互)

在Scala.js应用程序中,采用什么最简单的方法将此流式传输到客户端


编辑这个问题有两个方面,为了使问题更简单,只接受概述客户端代码的答案。服务器端总是另一个问题…

原则上,最好的方法似乎是使用,但这需要服务器上的Websocket支持。IIRC,Spray没有WebSocket,但它们最近被添加到akka http中,akka http是Spray的替代品

除此之外,它可能是可以做到的,但它并不完全优雅。不过,我怀疑围绕这种技术编写Scala.js shell并不难

请注意,这个问题实际上与Scala.js本身没有什么关系。SJS可以做JavaScript所能做的事情。关键的问题是,是否有一种好的方法可以从JavaScript中满足您的需要


也就是说,Autowire在这方面可能是错误的——它是一种RPC机制,这意味着根据定义,它总是返回完整的结果。它不太适合流媒体,至少现在是这样。这可能会在将来发生变化,如果我们想办法使Autowire适应Akka流,这样Autowire调用就可以返回流,但我们还没有开始讨论这意味着什么——即使在服务器上,真正的流支持也是非常新的,目前仍在讨论客户机服务器的使用。

那么升级到akka http将提供akka流?在客户端上可以使用RxJS吗?正如您提到的,使用Scala.js.Mind中的JavaScript并不是什么大问题,我不是这方面的专家——我自己也不会升级到akka http,直到它被集成到游戏中。但我的理解是akka http是建立在akka流之上的,所以我很确定第一个问题的答案是肯定的。在服务器上使用它,我相信您应该能够在客户机上选择您喜欢的任何Web服务器库。(可能需要编写一两个facade,但这并不难。)我还应该为akka http添加一个常见的警告:虽然我认为它运行得很好,但它还没有得到优化。如果性能至关重要,请注意它仍然比喷洒慢得多。