准备好的方法和Scala中Future的结果不能直接调用

Mic*_*ael 6 concurrency scala future

我注意到,方法readyresultscala.concurrent.Future不能直接调用.当我在REPL中调用它时,我收到错误.因此,我必须打电话Await.ready,Await.result而不是.

没关系,但看起来有点尴尬.所以现在我想知道:

  • 为什么他们不能直接援引;
  • 在这种情况下,为什么它们作为公共API公开.

om-*_*nom 4

官方文档中列出了原因:

\n\n
\n

Future 特征通过 method\n read() 和 result() 方法实现 Awaitable 特征。这些方法不能由客户端 xe2x80x93 直接调用,它们只能由执行上下文调用。

\n
\n\n

这样,库设计者就会强制您在适当的环境中使用这些方法(执行上下文,可能是第三方,或者通过 Awaitable 对象来显式表示阻塞操作)。

\n

  • 好的。也许我需要一个例子来理解它......无论如何,将这些方法暴露给最终用户看起来不是一个糟糕的库设计吗? (3认同)