考虑下面的例子:我该如何将这个未来的结构扁平化?
val handler : Connection = new DatabaseConnectionHandler()
val result : Future[Future[Future[Option[ResultSet]]]] = handler.connect
.map((parameters) => handler)
.map(connection => connection.sendQuery("BEGIN TRANSACTION SERIALIZABLE"))
.map(future => future.map(query => query.rows))
.map(future => handler.sendQuery("COMMIT").map(query => future))
是否有可能将其平整接收Future[Option[ResultSet]]
在最后,而不是未来几年内这个未来Scala中的一个未来结构里面?
我目前正在使用斯卡拉的2.10未来的和承诺的,但我找不到一个方法来解决这个问题。我知道我可以使用嵌套回调,但我宁愿避免这种情况,因为代码看起来很可怕。
Connection
特征定义为here。
不错,就是这样! – 2013-04-05 14:21:05
'scala.concurrent.Future'没有'flatten'' – senz 2015-05-13 09:33:22
@senz是的,'scala.concurrent.Future'没有'flatten'。但是你可以使用'f flatMap identity'。 [见这里](https://groups.google.com/forum/#!topic/scala-internals/yVYe_xnUOFA) – HEX 2015-09-07 11:18:59