Scala中Future的ready方法和result方法不能直接调用



我注意到scala.concurrent.Futurereadyresult方法不能直接调用。当我在REPL中调用它们时,我得到一个错误。因此,我不得不调用Await.readyAwait.result

还可以,但是看起来有点别扭。所以现在我想知道:

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

官方文档中列出了原因:

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

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

最新更新