如何在Seq上执行缩小/折叠操作,然后获取最终值。
我正在执行返回Future的操作(在本例中为Redis调用)。我正在使用map操作处理Future(结果)。
map操作返回Future [Seq [Any]]类型。
res0: scala.concurrent.Future[Seq[Any]] = scala.concurrent.impl.Promise$DefaultPromise@269f8f79
现在我想在这个Seq上执行一些操作(fold / reduce),然后得到一个最终值。我怎样才能做到这一点?
implicit val akkaSystem = akka.actor.ActorSystem()
val redisClient = RedisClient()
val sentimentZSetKey = "dummyzset"
val currentTimeStamp = System.currentTimeMillis()
val end = Limit(currentTimeStamp)
val start = Limit(currentTimeStamp - 60 * 100000)
val results = redisClient.zrangebyscoreWithscores(ZSetKey, start, end)
implicit val formats = DefaultFormats
import org.json4s._
import org.json4s.native.JsonMethods._
import org.json4s.DefaultFormats
results.map {
seq => seq.map {
element => element match {
case (byteString, value) => {
val p = byteString.decodeString("UTF-8")
try {
val ph = parse(p).extract[MyClass]
ph
} catch {
case e: Exception => println(e.getMessage)
}
}
case _ =>
}
}
}
答案 0 :(得分:2)
在Scala中使用期货时阻止为discouraged,但可以根据链接使用Await
函数完成。由于您希望进一步转换序列,因此最好使用these examples中的功能组合。