你可以做这样的事情
val p = Promise[Unit]()
val f = p.future
//... some code run at a later time
p.success {
// your function
}
Run Code Online (Sandbox Code Playgroud)
后期编辑:
我认为您正在寻找的模式可以像这样封装:
class LatentComputation[T](f: => T) {
private val p = Promise[T]()
def trigger() { p.success(f) }
def future: Future[T] = p.future
}
object LatentComputation {
def apply[T](f: => T) = new LatentComputation(f)
}
Run Code Online (Sandbox Code Playgroud)
你会像这样使用它:
val comp = LatentComputation {
// your code to be executed later
}
val f = comp.future
// somewhere else in the code
comp.trigger()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |