6

我注意到方法readyresultofscala.concurrent.Future不能直接调用。当我在 REPL 中调用它们时,我得到一个错误。因此我不得不打电话给Await.readyand Await.result

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

  • 为什么不能直接调用它们;
  • 为什么在这种情况下它们被公开为公共 API。
4

1 回答 1

4

原因在官方文档中列出:

Future trait 通过方法 ready() 和 result() 实现了 Awaitable trait。这些方法不能被客户端直接调用——它们只能被执行上下文调用。

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

于 2013-05-17T16:59:52.987 回答