我注意到scala.concurrent.Future
的ready
和result
方法不能直接调用。当我在REPL中调用它们时,我得到一个错误。因此,我不得不调用Await.ready
和Await.result
。
还可以,但是看起来有点别扭。所以现在我想知道:
- 为什么不能直接调用它们; 为什么在这种情况下它们被暴露为公共API。
官方文档中列出了原因:
Future trait用methods方法实现了await traitReady()和result()。方法不能直接调用这些方法客户端——它们只能被执行上下文调用。
这样,库设计人员强制您在适当的环境中使用这些方法(执行上下文,可能是第三方,或通过可等待对象显式表示阻塞操作)。