在 Scala 库 cats-effect 2 中,如何可靠地触发 IO 取消?

问题描述 投票:0回答:0

这是一个简短的例子:

假设

forever
是永不结束的IO,我想运行3秒触发取消:

    val start = forever.runCancelable {
      case Left(ee) =>
        IO {
          println(s"FAILUE: ${ee.toString}")
        }
      case Right(kk) =>
        IO {
          println("SUCCESS!")
        }
    }

    val cancelling = start.unsafeRunSync()

    Thread.sleep(3000)

    cancelling.unsafeRunSync()

    println("finished")

执行这段代码时,我发现没有执行任何println取消函数(println和断点都不起作用)。

那么触发它的正确方法是什么?

scala asynchronous scala-cats cats-effect
© www.soinside.com 2019 - 2024. All rights reserved.