问题标签 [iterate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Playframework 并行渲染
我想在一个动作中并行处理多个任务,并在完成后立即按最先完成的顺序推回任何任务结果。
例如,如果任务 A 在 5 秒内完成,任务 B 在 3 秒内完成,任务 C 在 1 秒内完成,则输出应为“C”、“B”、“A”。
以下代码似乎输出错误的顺序,并在输出结果之前等待所有任务完成。
scala - 使用 Play 2.3 Websocket 的私人聊天应用程序
我正在使用 WebSockets 开发一个聊天应用程序(在带有 scala 的 Play 2.3 中)。必须根据传入消息将消息广播给所有用户或特定用户组。一个用户可以参与多个群聊,并且能够同时与个人聊天。
Concurrent.broadcast[JsValue]
返回元组(enumerator, channel)
。我不知道如何对这个频道应用过滤器,所以只有特定的客户组会收到消息。
我们可以在枚举器上应用过滤器,例如 (enumerator &> Enumeratee.filter[JsValue] {...} )。但是我们不能通过这个枚举器推送消息。
我不想在客户端解析消息。我的代码看起来像这样,
我在网上找到的大多数示例都使用了已弃用的方法,其中一些在 Play 2.3 中被删除(如 Enumerators.imperative)。我不知道如何Concurrent.unicast
工作。
我想知道是否有另一种使用 Actors 的方法来做同样的事情。我也想知道,这种设计将处理更高的负载(超过 1000 个用户)。谢谢你。
scala - 在 Play Framework WebSockets 中广播消息
我正在使用 Play Framework WebSockets 推送消息Concurrent.unicast[JsValue]
,并且我想优化向多个用户发送相同的消息。是否可以使用多种方式广播消息Concurrent.Channel
?
scala - Scala Play `Enumerators`:推还是拉?
我真的很难理解 Play 的Iteratee
s 和Enumerator
s 的基本目的。
我读了
我阅读了这个答案,发现它不是依赖拉模型,InputStream
而是使用推模型。
Iteratees 是一种有趣的野兽——一方面,它将数据“推送”到处理程序,而不是依赖处理程序来提取数据,因此具有更好的性能。另一方面,它允许处理程序控制何时应该停止流。
但是 Play 在Iteratee
s 上的文档说
或者更一般地枚举
java.io.InputStream
usingEnumerator.fromStream
。重要的是要注意,在应用此 Enumerator 的迭代对象准备好接受更多输入之前,不会读取输入。
等等……那到底是怎么回事?
数据是由 推Enumerator
还是由 拉Iteratee
?(即谁决定何时计算更多数据)
scala - 如何在 Play 2.1 中使用带有分块响应的 OutputStreams
我需要使用java.util.zip.ZipOutputStream
压缩文件存档来响应。
未压缩的数据有几百兆字节,所以我想尽可能少地存储它。它来自 SQL 结果的序列化。
我看到使用 anOutputStream
返回分块结果的示例Enumerator.outputStream
:
但是当我阅读文档时,这些似乎是不明智的(强调我的)
使用 OutputStream 创建一个字节枚举器。
并不是说 write 调用不会阻塞,因此如果被馈送到的迭代器消耗输入的速度很慢,则 OutputStream 不会推回。这意味着它不应该与大型流一起使用,因为存在内存不足的风险。
显然,我不能使用它。或者至少不是没有修改。
如何使用OutputStream
(在本例中为 gzip 压缩存档)创建响应,同时确保只有部分响应存储在内存中?
InputStream
我认识到s/ OutputStream
s 和 Play 的Enumerator
/范式之间的区别Iteratee
,所以我希望会有一种特定的方式来生成我的源数据(SQL 结果的序列化),这样它就不会超过下载速度。我不知道那是什么。
scala - Iteratee 获取分块数据(Scala)
我有很多数据,这些数据是通过游标从 db 获得的(例如 200 万个条目),现在我正在使用Iteratee.foreach
,但我想优化和操作对象数组。是否可以对某些块进行操作,例如读取 1000 个文档,然后运行我的代码。
playframework - Reactivemongo:如何处理 Iteratee.fold 内部发生的异常
似乎 reacitvemongo 枚举器没有正确处理异常。下面的代码使用一个枚举器(由 reactivemongo 驱动程序返回)来创建一个列表,这里的问题是,当 fold 函数内部出现异常时,请求挂起并且浏览器根本没有得到响应(加载器无限旋转)
它甚至无法从失败的执行中恢复。
我在这里遗漏了一些东西,或者它是 reactivemongo enumerator 中的错误?
scala - Iteratees 管理资源是否安全?
假设我正在阅读一个InputStream
.
我通常会怎么做:
无论是否doStuff
抛出异常,我们都会关闭InputStream
.
我将如何使用迭代器:
会InputStream
被关闭(即使doStuff
抛出异常)?
一个小测试:
我们只看到:
溪流从未关闭。替换1 / 0
为1 / 1
,您会看到流关闭。
当然,我可以保持对原始流的引用并在失败时关闭它,但 AFAIK 使用 iteratees 的想法是创建可组合的迭代而不必这样做。
这是预期的行为吗?
有没有办法使用迭代器,以便始终正确处理资源?
playframework - 如何从枚举器中删除 EOF
我想连接两个Enumerator
s。问题是,>>>
如果andThen
第一个有EOF
.
我想我应该放弃EOF
,但我不知道如何干净地做到这一点。
我想有一种常见的惯用方式可以做到这一点。它是什么?
scala - 为什么我们需要 scalaz.stream 而不是 iteratee?
最近,我一直在玩scalaz.iteratee和 Play 的iteratee。我认为 iteratee 是提供模块化而不是旧的命令式 while 循环的好主意——目的是使用一个函数作为每个新行的处理程序,而不是从文件中获取 string[]。
但是,当我查看 scalaz.stream 的功能概述时,它提到了它的设计是为了取代旧的 iteratee implementation,但没有提到他们为什么要替换它。
有人可以向我解释一下,如果我们可以 Stream,我们可以获得哪些功能和好处,以及使用 iteratee 的缺点是什么?