gpt4 book ai didi

rx-java - Scala.js Observables 查询

转载 作者:行者123 更新时间:2023-12-02 01:34:16 24 4
gpt4 key购买 nike

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

我遇到的问题是浏览器一次返回了整个“项目大列表”结果。我想做一个返回 Observable 或 Stream 的查询。这将使 UI 能够在用户观看时动态填充。在这种情况下,客户端将在每个项目返回时得到通知(或每隔几个项目,将由客户端决定它如何与数据“管道”交互)。

在 Scala.js 应用程序中启用这种流式传输到客户端的最简单方法是什么?

编辑 这个问题有两个方面,所以为了使它更简单,一个仅概述客户端代码的答案将被接受。服务器端总是可以是另一个 SO 问题......

最佳答案

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

除此之外,它可能可以完成 using a technique like this one ,但它并不十分优雅。不过,我怀疑围绕这种技术编写 Scala.js shell 并不难。

请注意,这个问题实际上与 Scala.js 本身关系不大。 SJS 可以做 JavaScript 可以做的事情。关键问题实际上是,是否有适合您需要的 JavaScript 执行此操作的好方法。

也就是说,Autowire 在这个目的上可能是错误的——它是一种 RPC 机制,这意味着根据定义它总是返回一个完整的结果。它不太适合流式传输,至少现在是这样。如果我们弄清楚如何使 Autowire 适应 Akka Streams 以便 Autowire 调用可以返回 Stream,这可能在未来可能会发生变化,但我们才刚刚开始讨论这意味着什么 - - 真正的 Stream 支持甚至在服务器上也是相当新的,并且仍在讨论客户端-服务器的使用。

关于rx-java - Scala.js Observables 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com