问题标签 [monix]
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 - 用开始时间和结束时间包装 monix 任务的最佳方法是什么?
这就是我现在正在尝试的,但它只打印“嘿”而不是指标。我不想在主函数中添加与指标相关的东西。
scala - 调用者任务如何避免它的调度程序被其 flatMap 结束的子任务更改
我正在寻找一种方式Task
(即外部范围)可以使用或等效的方式执行“子任务” flatMap
,并确保外部范围中的任何后续链接调用都使用原始调度程序。
使用的库和scala:
- 斯卡拉 - 2.12.4
- 莫尼克斯 -
"io.monix" %% "monix" % "3.0.0-RC1"
- 猫 -
"org.typelevel" %% "cats-core" % "1.0.1"
示例代码:
该subTask
方法希望在专用调度程序 ( io2
) 上执行一些异步工作,因此它强制使用调度程序的异步边界executeOn
。
该outerScope
方法正在某个程序中执行,program1
它使用. 由于它没有任何明确的异步边界,如果碰巧更改了调度程序(它确实如此),其余的将使用由. 出于这个原因,调用在调度程序上执行。sub
subTask
flatMap
subTask
outerScope
subTask
taskEval("outerScopeAfter")
io2
试图通过在ped (ie )之后outerScopeTryProtect
引入异步边界 (using) 来保护它使用的调度程序。但是,异步边界 ( ) 将调度程序重置为默认调度程序,在这种情况下,默认调度程序将一直返回到. 这不是我们想要的,因为我们想回到调用时使用的调度程序,即调度程序。Task.shift
flatMap
sub
subTask
Task.shift
program2.runAsync
taskEval("outerScopeBefore")
io1
我正在寻找的是类似这样的东西Task[A].flatMap[B](f: A => Task[B]): Task[B]
,它将f
以任何方式执行f
指定的任务(可能使用不同的调度程序),但调用的结果Task
将flatMap
返回Task[A]
到flatMap
.
multithreading - 在 Scala Monix Scheduler 中,如何将异常传播到主程序?
我有一个调度容易出错的任务的Monix : Scheduler
问题是——如果调度程序内的任务抛出异常,调度程序停止并且异常不会传播到主程序。我希望主程序获取异常并处理它(实际上我想停止整个程序。)。
我可能只是sys.exit()
在里面打电话,但我认为这并不理想,因为父进程应该监督子进程。
使用时Task
我可以从主程序中捕获它task.runSyncUnsafe()
,因为Scheduler
有没有办法做同样的事情?
scala - 类型别名和隐式值解析
我认为这是一个简单的问题,但我遇到了无法找到 Monix 任务的 FlatMap 或 Functor 的问题。我使用“类型别名”来简化长类型签名,但随后在 for-comprehession 中收到“找不到隐式值”错误。如果我删除类型别名,那么它会起作用,因为 Monix 支持猫。是否有人对如何告诉编译器 TaskEither 是 Monix 任务并且可以只使用 Monix Task 提供的猫实例提出建议。键入别名:
发生错误的方法: 注意:getBotForUser 和 processBotDetails 都被包裹在一个类似于 findCreateBot 方法的 Kleisli 中
错误信息:
错误信息:
scala - 类路径中缺少符号“type cats.MonadFilter”
我正在阅读关于无标签 final的本教程。
基于此,我将我的依赖项定义为
以下是我的代码
但我得到一堆错误。我使用的猫版本似乎与 Monix 使用的版本不兼容。
我还尝试删除我对猫的依赖并仅导入 monix,以便 monix 引入它自己的猫版本。但即使这样也无法编译。
scala - 了解 monix 消费者负载平衡
我正在学习monix 3
。
下一个代码:
导致编译错误:
缺少参数类型
.consumeWith(Consumer.loadBalance(3, Consumer.foreach(i => println(s"End $i"))))
我想不通,这里出了什么问题,以及如何使这段代码编译?
UPD
第二个问题是如何每n
分钟重复一次这个流?
scala - How to make monix fixed rate Scheduler continue upon failure
I am just starting to use monix, in part for scheduling repeated work in a long running app. I will manage exceptions but I would like that monix continue calling the given function even if I let pass some of them.
Now, from a simple test, once a repeated call is scheduled, it won't continue calling it once an exception arise :
Note: I create the scheduler to log exceptions and errors
EDIT:
I realize that it's a poor design to simply repeat that task upon failure. Instead I should actually setup a proper exception management system, with delayed restart.
Now, I don't see any functionalities in Monix to do that. So I'll have to do it my-self. I let the question in case someone has the same issue, and in case someone knows of a monix tooling that can be useful.
monads - Scala Cats:用于任务 [Validated[String,?] 的 Monad 实例的尾递归 tailRecM 方法
在cats
中,当Monad
使用 trait 创建a 时,理想情况下应提供Monad
方法的尾递归实现以确保堆栈安全。tailRecM
我正在使用无标记的最终方法,并希望对我的程序产生Task[Validated[String, ?]]
(Monix ) 的效果。Task
我不知道如何编写尾递归实现。我的非尾递归解决方案是:
scala - 构建一个大任务计算与同步执行几个步骤相比如何?
我有以下两段用 Scala/Monix 编写的代码:
和
我认为 f1 版本更好,因为它完全异步并且不会阻塞线程,我的假设是,如果有很多任务正在运行,第一个在多线程中应该表现更好。
我知道我应该编写一个测试来比较这两种实现,但这需要对遗留代码进行大量重构。此外,在我们的具体情况下,这两个版本的分析并不容易,所以我先在这里问,希望有很多 Scala/Monix 经验的人回答:
两者在重负载下的性能应该如何比较?这是一个真正的问题还是不是问题?
rxjs - 在订阅时以相反的顺序重播缓存的项目
我有一个 ConnectableObservable ,它在订阅时将按原始顺序(从旧到最新)重播最后 x 个项目以及之后的任何后续事件。
我使用这个 Observable 作为事件记录器的后备存储,但是在订阅时,我实际上希望以相反的顺序(从最新到最旧)推送/onNext'ed 重播项目,以便我可以首先显示最相关的项目。
这对标准 RX 操作员是否可行,还是我必须创建一个自定义操作员?