我有一个函数,可以计算两个子函数,如下所示。
def someFutureMethod1(input: Int): Int = {
input + 1
}
def someFutureMethod2(input: Int): Int = {
input + 12
}
def method1(sx: Int): Future[Int] = Future {
val future: Int = someFutureMethod1(sx)
val future2: Int = someFutureMethod2(future)
future.andThen{
return future
}
future2.andThen{
return future2
}
}
Print(method1(10))
expected result:
11
23我想在第一个函数计算时立即返回结果,并在第二个函数计算时更新或附加到相同的结果。
第二个函数依赖于第一个function.As,一旦第一个函数成功执行,就应该返回结果。并将第一函数结果传递给第二函数以计算第二函数。如果计算了第二个函数,则只返回第二个函数的结果。
有没有办法做到这一点?
提前感谢!!
发布于 2019-09-17 13:57:35
检查此代码片段(有函数签名修改),
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
def someFutureMethod1(input: Int): Future[Int] = Future {
input + 1
}
def someFutureMethod2(input: Int): Future[Int] = Future {
input + 12
}
def method1(sx: Int): Future[Int] = {
val future1 = someFutureMethod1(sx)
val future2 = someFutureMethod2(sx)
for {
f1 <- future1
f2 <- future2
} yield {
f1 + f2 //add logic for your final output
}
}https://stackoverflow.com/questions/57967833
复制相似问题