作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我以前的question的跟进
假设我想用我的函数创建一个future,但是不想立即启动它(即我不想调用val f = Future { ... // my function}
。
现在,我可以看到它可以按如下方式完成:
val p = promise [Unit]
val f = p.future map {_ =>//我的功能在这里}
这是不执行我的功能来创建 future 的唯一方法吗?
最佳答案
你可以做这样的事情
val p = Promise[Unit]()
val f = p.future
//... some code run at a later time
p.success {
// your function
}
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)
}
val comp = LatentComputation {
// your code to be executed later
}
val f = comp.future
// somewhere else in the code
comp.trigger()
关于scala - 创造 future 而无需开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16574647/
我是一名优秀的程序员,十分优秀!