Scala:Return 但不要停止执行
Scala: Return but don't stop executing
这是一件简单的事情,但我不知道如何在 Scala 中做到这一点。我想 return 一个 true
一个 Future
。我使用推特Future
。但我想 return 尽快完成。像这样:
def saveOrUpdate(pageImpression: PageImpressions): com.twitter.util.Future[Boolean] = {
return com.twitter.util.Future.value(true)
count += 1
println(count)
}
但这行不通。我如何才能 return 一些东西但又继续执行?这是一个 HTTP 服务。 return 值将 return 发送到 HTTP 客户端。
我不确定我是否理解您到底在寻找什么,但您似乎想要这样的东西:
def saveOrUpdate(pageImpression: PageImpressions) {
FuturePool.unboundedPool {
count += 1
println(count)
}
Future.value(true)
}
它在后台线程上增加计数并打印出来,return不久的将来 true
。
然而,从更多方面来说,这是错误的做法。我根本不推荐它。首先,它对可变变量的访问是不同步的,会造成大问题。
其次,它 returns true
无条件地,不管底层操作如何(或是否)实际完成。如果您不关心执行结果,您应该 return(未来)Unit
,而不是 Boolean
。
这是一件简单的事情,但我不知道如何在 Scala 中做到这一点。我想 return 一个 true
一个 Future
。我使用推特Future
。但我想 return 尽快完成。像这样:
def saveOrUpdate(pageImpression: PageImpressions): com.twitter.util.Future[Boolean] = {
return com.twitter.util.Future.value(true)
count += 1
println(count)
}
但这行不通。我如何才能 return 一些东西但又继续执行?这是一个 HTTP 服务。 return 值将 return 发送到 HTTP 客户端。
我不确定我是否理解您到底在寻找什么,但您似乎想要这样的东西:
def saveOrUpdate(pageImpression: PageImpressions) {
FuturePool.unboundedPool {
count += 1
println(count)
}
Future.value(true)
}
它在后台线程上增加计数并打印出来,return不久的将来 true
。
然而,从更多方面来说,这是错误的做法。我根本不推荐它。首先,它对可变变量的访问是不同步的,会造成大问题。
其次,它 returns true
无条件地,不管底层操作如何(或是否)实际完成。如果您不关心执行结果,您应该 return(未来)Unit
,而不是 Boolean
。