gpt4 book ai didi

scala - 创造 future 而无需开始

转载 作者:行者123 更新时间:2023-12-04 05:13:10 27 4
gpt4 key购买 nike

这是我以前的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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com