问题标签 [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.

0 投票
2 回答
862 浏览

scala - 用开始时间和结束时间包装 monix 任务的最佳方法是什么?

这就是我现在正在尝试的,但它只打印“嘿”而不是指标。我不想在主函数中添加与指标相关的东西。

0 投票
0 回答
67 浏览

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它使用. 由于它没有任何明确的异步边界,如果碰巧更改了调度程序(它确实如此),其余的将使用由. 出于这个原因,调用在调度程序上执行。subsubTaskflatMapsubTaskouterScopesubTasktaskEval("outerScopeAfter")io2

试图通过在ped (ie )之后outerScopeTryProtect引入异步边界 (using) 来保护它使用的调度程序。但是,异步边界 ( ) 将调度程序重置为默认调度程序,在这种情况下,默认调度程序将一直返回到. 这不是我们想要的,因为我们想回到调用时使用的调度程序,即调度程序。Task.shiftflatMapsubsubTaskTask.shiftprogram2.runAsynctaskEval("outerScopeBefore")io1

我正在寻找的是类似这样的东西Task[A].flatMap[B](f: A => Task[B]): Task[B],它将f以任何方式执行f指定的任务(可能使用不同的调度程序),但调用的结果TaskflatMap返回Task[A]flatMap.

0 投票
1 回答
321 浏览

multithreading - 在 Scala Monix Scheduler 中,如何将异常传播到主程序?

我有一个调度容易出错的任务的Monix : Scheduler

问题是——如果调度程序内的任务抛出异常,调度程序停止并且异常不会传播到主程序。我希望主程序获取异常并处理它(实际上我想停止整个程序。)。

我可能只是sys.exit()在里面打电话,但我认为这并不理想,因为父进程应该监督子进程。

使用时Task我可以从主程序中捕获它task.runSyncUnsafe(),因为Scheduler有没有办法做同样的事情?

0 投票
1 回答
252 浏览

scala - 类型别名和隐式值解析

我认为这是一个简单的问题,但我遇到了无法找到 Monix 任务的 FlatMap 或 Functor 的问题。我使用“类型别名”来简化长类型签名,但随后在 for-comprehession 中收到“找不到隐式值”错误。如果我删除类型别名,那么它会起作用,因为 Monix 支持猫。是否有人对如何告诉编译器 TaskEither 是 Monix 任务并且可以只使用 Monix Task 提供的猫实例提出建议。键入别名:

发生错误的方法: 注意:getBotForUser 和 processBotDetails 都被包裹在一个类似于 findCreateBot 方法的 Kleisli 中

错误信息:

错误信息:

0 投票
1 回答
1305 浏览

scala - 类路径中缺少符号“type cats.MonadFilter”

我正在阅读关于无标签 final的本教程。

基于此,我将我的依赖项定义为

以下是我的代码

但我得到一堆错误。我使用的猫版本似乎与 Monix 使用的版本不兼容。

我还尝试删除我对猫的依赖并仅导入 monix,以便 monix 引入它自己的猫版本。但即使这样也无法编译。

0 投票
1 回答
110 浏览

scala - 了解 monix 消费者负载平衡

我正在学习monix 3
下一个代码:

导致编译错误:

缺少参数类型
.consumeWith(Consumer.loadBalance(3, Consumer.foreach(i => println(s"End $i"))))

我想不通,这里出了什么问题,以及如何使这段代码编译?

UPD
第二个问题是如何每n分钟重复一次这个流?

0 投票
2 回答
229 浏览

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.

0 投票
1 回答
376 浏览

monads - Scala Cats:用于任务 [Validated[String,?] 的 Monad 实例的尾递归 tailRecM 方法

cats中,当Monad使用 trait 创建a 时,理想情况下应提供Monad方法的尾递归实现以确保堆栈安全。tailRecM

我正在使用无标记的最终方法,并希望对我的程序产生Task[Validated[String, ?]](Monix ) 的效果。Task

我不知道如何编写尾递归实现。我的非尾递归解决方案是:

0 投票
1 回答
50 浏览

scala - 构建一个大任务计算与同步执行几个步骤相比如何?

我有以下两段用 Scala/Monix 编写的代码:

我认为 f1 版本更好,因为它完全异步并且不会阻塞线程,我的假设是,如果有很多任务正在运行,第一个在多线程中应该表现更好。

我知道我应该编写一个测试来比较这两种实现,但这需要对遗留代码进行大量重构。此外,在我们的具体情况下,这两个版本的分析并不容易,所以我先在这里问,希望有很多 Scala/Monix 经验的人回答:

两者在重负载下的性能应该如何比较?这是一个真正的问题还是不是问题?

0 投票
1 回答
241 浏览

rxjs - 在订阅时以相反的顺序重播缓存的项目

我有一个 ConnectableObservable ,它在订阅时将按原始顺序(从旧到最新)重播最后 x 个项目以及之后的任何后续事件。

我使用这个 Observable 作为事件记录器的后备存储,但是在订阅时,我实际上希望以相反的顺序(从最新到最旧)推送/onNext'ed 重播项目,以便我可以首先显示最相关的项目。

这对标准 RX 操作员是否可行,还是我必须创建一个自定义操作员?