相同的 scala Task 代码在沙箱中有效,但在 intelliJ 中无效
The same scala Task code works in sandbox but doesn't work in intelliJ
只需尝试一些简单的任务示例。以下代码工作正常
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}")
}
但使用 运行ToFuture 仅在沙箱中有效,当我 运行 它在 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"
Process finished with exit code 0
什么原因,没想到这么早就卡住了。提前致谢
当 运行 作为 stand-alone 程序时,程序会在任务完成之前退出,因此您不会得到任何输出。您需要等待任务完成。
Await.result(future, Duration.Inf)
只需尝试一些简单的任务示例。以下代码工作正常
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}")
}
但使用 运行ToFuture 仅在沙箱中有效,当我 运行 它在 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"
Process finished with exit code 0
什么原因,没想到这么早就卡住了。提前致谢
当 运行 作为 stand-alone 程序时,程序会在任务完成之前退出,因此您不会得到任何输出。您需要等待任务完成。
Await.result(future, Duration.Inf)