scala 如何使猫.效果.控制台超时?

wtlkbnrh  于 2022-12-23  发布在  Scala
关注(0)|答案(1)|浏览(134)

我想在3秒内从控制台获取输入,否则在超时情况下返回"Timeout!"

def withTimeout: IO[String] =
  Console[IO].readLine.timeoutTo(3.seconds, IO.pure("Timeout!"))

但是3秒后它没有停止,而是等待任何输入,并且只有在input返回"Timeout!"后才会停止。是否因为Console不可取消而发生这种情况?如何解决这个问题?

1mrurvl1

1mrurvl11#

这是一个众所周知的"cantfix"问题,根本问题是从JVM上的stdin读取是不可中断的,我们对此无能为力。
我的建议是改用fs2.io.stdinUtf8
进一步阅读:

相关问题