Scala:返回但不要停止执行

时间:2016-06-04 10:08:07

标签: scala future

这是一件简单的事情,但我不知道如何在Scala中做到这一点。我想在true中返回Future。我使用twitter Future。但我希望尽快回复它。像这样:

def saveOrUpdate(pageImpression: PageImpressions): com.twitter.util.Future[Boolean] = {
  return com.twitter.util.Future.value(true)
  count += 1
  println(count)
}

但这不起作用。我怎样才能返回一些东西而且还要继续执行?这是一个HTTP服务。返回值将返回给HTTP客户端。

1 个答案:

答案 0 :(得分:0)

我不确定我明白你究竟在寻找什么,但似乎你想要这样的东西:

def saveOrUpdate(pageImpression: PageImpressions) {
  FuturePool.unboundedPool { 
     count += 1
     println(count)
  }
  Future.value(true)      
}

它会增加计数并将其打印在后台线程上,并使用true返回一个直接的未来。

然而,这是一个错误的事情。我根本不推荐它。首先,它具有对可变变量的不同步访问,导致大问题。

其次,它无条件地返回true,无论底层操作如何(或是否)实际完成。如果您不关心执行结果,则应返回({期})Unit,而不是Boolean