【发布时间】:2017-07-21 04:05:27
【问题描述】:
我有一个返回值为 Future[Int] 的函数
def func: Future[Int] = {...}
我会定期检查 func 的返回值,直到它满足某些条件(例如返回值大于 10),然后我将利用这个返回值与 map/flatmap 一起创建其他未来值。
如何在没有任何同步代码的情况下完成这项工作?如下所列:
def check: Future[Int] = {
var ret: Int = Await.result(func, Duration.Inf)
while (ret <= 10) {
ret = Await.result(func, Duration.Inf)
}
Future(ret + 100)
}
【问题讨论】:
-
小心,如果 def func 在同一次调用中返回不同的值,它看起来不是纯函数。
标签: scala