问题标签 [cats-effect]
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 - 如何为猫效应的资源添加适当的错误处理
我正在尝试使用cat-effect以纯功能方式获取一些基本文件 IO(写入/读取) 。在遵循本教程之后,这是我最终读取文件的结果:
现在在handleErrorWith
函数中我可以记录任何发生的错误,但是我怎样才能为此添加正确的错误处理(例如 return a Resource[IO, Either[CouldNotReadFileError, BufferedReader]]
)?
fs2 - fs2 流到 zip 压缩的 fs2stream
我有一个 fs2 流,我想创建一个压缩流,准备好写入带有*.zip
扩展名的文件或下载。
问题是流永远不会终止。这是代码:
该代码是从https://github.com/eikek/sharry/blob/master/modules/common/src/main/scala/sharry/common/zip.scala无耻地复制
并更新以使用最新的fs2
和cats-effect
我将问题缩小到enqueueChunkSync
:
哪个块在最后一个块上。当我放在println
那里并使缓冲区变小时,我看到块已成功刷新,直到最后一个。
当我删除阻塞位done.get.fold(throw _, identity)
时,它似乎可以工作,但是我想这些字节会一次全部刷新到流中?
最后一个块与以前的块有什么不同?
scala - 如何在不使用 A 的情况下将效果附加到 Resource[F, A] 中的 F?
给定 a ,在不使用(ie ) 的情况下Resource[F, A]
附加效果(例如指标、日志记录错误)的最惯用方式是什么?F
A
.use
我可以用 a 轻松做到这一点,F[A]
但我依赖一个专门返回 a 的 APIResource[F, A]
来确保它A
会被正确发布。
scala - `.delay` 或 `.map` 中抛出的异常的猫效应的预期行为
在 PR 审查期间,我被要求替换Sync[F].delay
为,Sync[F].catchNonFatal
因为可能会抛出异常。
这确实有效:
不确定该行为是否特定于IO
,我还能够找到相应的法律说它实际上是预期的,但我在主要的猫效应文档中找不到关于 API 中自动处理异常的提及。
.delay
有没有人知道在or .map
or中抛出 cat-effect wrt 异常的原理和预期行为.flatMap
?
scala - 使用cats.effect时,值flatMap不是类型参数F[Long]的成员
这可能以前被问过很多次,但我没有找到任何帮助。
我有一个简单的 Scala 代码,它生成取决于一些副作用的长数字。我将事物包装在 IO monad 中,但根据最小功率原则,我实际上将我的函数声明为F[_]: Effect
. 现在代码无法编译,我不明白为什么,请提出可能有问题的地方
另外,如果您对改进代码有任何建议,请告诉我。
scala - 如何在 Cats IO 效果中测量经过的时间?
我想测量 IO 容器内的经过时间。使用普通调用或期货相对容易(例如下面的代码)
但不确定如何包装 IO 调用
谢谢!
scala - 为什么延迟工厂方法在F的上下文中有返回值
我正在查看cats.effect.concurrent.Deferred
并注意到其伴随对象中的所有纯工厂方法都返回,而F[Deferred[F, A]]
不仅仅是Deferred[F, A]
但
为什么?
定义了abstract class
两种方法(省略了文档):
因此,即使我们Deferred
直接分配,也不清楚如何Deferred
通过其公共方法修改状态。所有修改都用 暂停F[_]
。
scala - 使用 fs2 将 URL 流式传输到本地文件
使用 fs2 (ver. 1.0.4) 和 cats-effect IO
,我可以将 URL 流式传输到本地文件,
但是,此代码段在完成时不会返回有关该进程的任何信息。最重要的是,除了知道操作是成功还是失败之外,我还想知道如果操作成功,读取了多少字节。我不想检查新文件大小来获取此信息。另一方面,如果操作失败,我想知道导致失败的原因。
我尝试过attempt
,但无法解决将原始字节写入新文件的后续步骤。请指教。谢谢
scala - 如何使用 IO Monad 退出 For-Comprehension
当用户输入“停止”并使 readLn 异步时,我想在退出时进行无限读取打印循环。
我尝试使用IO(println(s"Buy Buy"))
但有错误信息:
如何在没有错误的情况下退出?
例如,我还想在另一个线程中执行 IO readLn
。
scala - 如何在隐式理解中执行spring存储库方法
我想将电报 api 中的数据保存为隐式的理解类型,但出现错误
TelegramBot 示例中的代码,它使用 info.mukel.telegrambot4s 3.0.9 库。
我试图删除回复并添加,此代码已编译,但保存(在 IO 内部)没有执行
有可能解决这个问题吗?