【发布时间】:2019-04-02 06:14:32
【问题描述】:
Awaitable trait 需要 CanAwait 隐式,它不能在 concurrent 包之外使用。因此,从技术上讲,您不允许直接调用 Awaitable 方法,而应使用 Await 对象。
我想了解为什么会做出这样的设计决定。
trait Awaitable[+T] {
def ready(atMost: Duration)(implicit permit: CanAwait): this.type
}
package concurrent {
sealed trait CanAwait
private[concurrent] object AwaitPermission extends CanAwait
object Await {
def ready[T](awaitable: Awaitable[T], atMost: Duration): awaitable.type =
blocking(awaitable.ready(atMost)(AwaitPermission))
}
}
【问题讨论】:
-
也许stackoverflow.com/questions/38155159/… 足够接近以提供上下文。
标签: scala