问题标签 [fs2]

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.

0 投票
1 回答
316 浏览

scala - 使用 FS2 的对象池模式

我想看看在FS2中实现对象池模式的最佳方法是什么。

假设我们有以下MyPrinter定义:

由打印机Stream[Task, MyPrinter]池支持的最佳方法是什么?n当流结束时,所有底层资源都应该通过调用正确释放releaseResources

额外的问题:如果打印机因某种原因终止,是否可以在池中创建一个新的?

0 投票
1 回答
167 浏览

scala - 如何将“流”转换为命令式读取操作

我有一个Stream[F,A],我需要将其转换为以下更“原始流接口”,以便被不fs2知道的代码库的一部分使用:

我该怎么做呢?也许答案是这样的转换是不可能的,一旦你将一个 java 流接口包装成一个fs2.Stream它就可以不再“转换”回一个“java 风格”的流接口,你必须Stream一直冒泡到顶层它可以通过管道传输到一些Sinkrun

0 投票
1 回答
670 浏览

scala - 如何使用 FS2 在 Scala 中实现递归斐波那契数列?

在尝试熟悉 FS2 时,我遇到了一个使用 Scala 集合的 Stream 的漂亮递归实现,并认为我可以在 FS2 中尝试一下:

这在 FS2 中挂起的原因是什么,获得类似的有效解决方案的最佳方法是什么?

0 投票
1 回答
1450 浏览

scala - 同时运行 Scala FS2 Streams

我正在尝试对作为网站负载生成器的系统进行建模。该网站的页面目前是字符串。

该网站的用户被建模为随机开始浏览该网站:

每个用户从一个页面转换到另一个页面,这被建模为:

我正在尝试运行这个模拟,让 4 个用户在随机间隔后开始浏览这个网站,每个用户随机访问三个页面:

输出如下所示:

即没有货币,所有随机睡眠都按严格的顺序发生。

如何更改此程序以使这些不同的流(开始浏览网站的新用户以及每个用户进行的转换)同时发生?


这是我的完整程序:

0 投票
0 回答
194 浏览

scala - 如何在 fs2 中使用 Free 和 Steam?

假设我想从 jms 读取数据,将其映射toUpperCase并发送到其他地方。所以我用 抽象出实际的消息系统Jms[A],对吧?

业务逻辑:

Free是要被解释的,就这样吧:

但是,要传递给freeProcess? 这些/什么?实现不是在完成所有工作吗?那我就不能忘记s吗?sourcesinkinterpreterStream

怎么在这里实际使用Free

0 投票
1 回答
846 浏览

scala - 带有块和任务的 Scala fs2 流?

0 投票
1 回答
217 浏览

scala - Scalaz 与 ReactiveX

我已经在 J​​ava 中使用 ReactiveX 扩展工作了几年,但现在我转向 scala,并且我看到很多人使用扩展 ScalaZ 在 Scala 中执行更多功能性编程。

使用 ScalaZ 扩展是否有任何区别,或者只是将 reactiveX 调整到我所做的 Scala 并且我知道与 Scala 配合得很好?

在阅读了这篇博客https://medium.com/@luijar/the-observable-disguised-as-an-io-monad-c89042aa8f31之后,我虽然在 Scalaz 中作为 IO monad 工作

问候。

0 投票
0 回答
360 浏览

task - fs2 Task.start 与异步

我有两个任务:

我想并行启动它们,最后在结果上运行一个函数(几乎就像我对 Applicative map2 所做的那样)。这工作得很好:

输出:164 - 第一个 164 - 第二个

每次都写额外的行来理解有点乏味。令我惊讶的是

输出:197 - 第一个 318 - 第二个

也不

输出:202 - 第一个 323 - 第二个

工作。在第一种情况下,任务是同时开始的,而在后两种情况下,它们是一个接一个地开始的。

我错过了什么?阅读async我理解的实现,其目的是使第一个片段在语法上有吸引力,但我不敢相信有一个错误,所以我可能只是滥用异步?

0 投票
0 回答
187 浏览

java - 将 Undertow Java 库转换为 fs2 流式库

我目前正在fs2-http用作我用 Scala 编写的 JavaFX 库的库,但就目前而言,它fs2-http是一个相当大的库,并且有太多依赖项无法作为桌面应用程序交付,因此我需要它尽可能小大小和内存占用,同时保留功能。

我决定使用 Undertow,它是一个 Java 库,但目前我正在努力将其组件转换为 Streams,而我当前处理数据的函数已经是流。

所以这是我的问题,我如何才能将这个普通的 Java 库转换为流式库?

0 投票
1 回答
733 浏览

http4s - 如何在 http4s 和 fs2 中并行化 REST API 爬虫?

我在这里用 http4s & fs2 编写了一个顺序 REST API 爬虫:

https://gist.github.com/NicolasRouquette/656ed7a2d6984ce0995fd78a3aec2566

这是查询 REST API 服务以获取一组起始 ID,获取一批 ID 的元素,并根据在这些元素中找到的交叉引用 ID 继续,直到没有新 ID 可获取并返回所有 ID 的映射提取的元素。

这行得通;但是,性能不足——太慢了!

由于我无法访问服务器,因此我尝试尝试不同的批量大小,从 10、50、100、200、500 甚至在单个查询中批量处理所有 ID。查询时间随着批量大小的增加而显着增加。在大尺寸(500 和所有尺寸)下,我什至从服务器收到了 HTTP 500 响应。

我想尝试使用线程池以负载平衡方式批处理并行查询;但是,我不清楚如何根据 fs2 文档执行此操作。

有人可以提供如何实现这一目标的建议吗?

关于使用 http4s 和 fs2:嗯,我发现这个库很容易用于简单的客户端编程。鉴于对支持任务、流等的强调,我认为批处理并行查询应该以某种方式可行。