我想在3秒内从控制台获取输入,否则在超时情况下返回"Timeout!"。
"Timeout!"
def withTimeout: IO[String] = Console[IO].readLine.timeoutTo(3.seconds, IO.pure("Timeout!"))
但是3秒后它没有停止,而是等待任何输入,并且只有在input返回"Timeout!"后才会停止。是否因为Console不可取消而发生这种情况?如何解决这个问题?
Console
1mrurvl11#
这是一个众所周知的"cantfix"问题,根本问题是从JVM上的stdin读取是不可中断的,我们对此无能为力。我的建议是改用fs2.io.stdinUtf8。进一步阅读:
fs2.io.stdinUtf8
1条答案
按热度按时间1mrurvl11#
这是一个众所周知的"cantfix"问题,根本问题是从JVM上的stdin读取是不可中断的,我们对此无能为力。
我的建议是改用
fs2.io.stdinUtf8
。进一步阅读: