0

只需尝试一些简单的任务示例。以下代码工作正常

import monix.eval.Task
import monix.execution.CancelableFuture
import monix.execution.Scheduler.Implicits.global

import scala.util.Success

val task = Task { 1 + 1 }
val cancellable = task.runAsync {
  case Right(result) => println(s"result is $result")
  case Left(err) => System.out.println(s"ERROR: ${err.getMessage}")
}

但使用 runToFuture 仅适用于沙箱,而不是当我在 intelliJ 中运行它时(当然在 intelliJ 中我在对象内运行它)

val task = Task { 1 + 1 }

val future: CancelableFuture[Int] = task.runToFuture
future.onComplete {
  case Success(res) => println(s"result is: $res")
}

在 intelliJ 中没有打印 2,只是

“C:\Program Files\Java\jdk1.8.0_192\bin\java.exe”

进程以退出代码 0 结束

可能是什么原因,我没想到这么早卡住了。提前致谢

4

1 回答 1

1

当作为独立程序运行时,程序会在任务完成之前退出,因此您不会得到任何输出。您需要等待任务完成。

Await.result(future, Duration.Inf)
于 2020-09-28T07:27:21.753 回答