Vin*_*Zou 17 java scala future sequence akka
环境:Akka 2.1,scala版本2.10.M6,JDK 1.7,u5
现在是我的问题:我有:
future1 = Futures.future(new Callable<Future<object>>(){...});
future2 = ? extends Object;
Future.sequence(future1, future2).onComplete(...)
Run Code Online (Sandbox Code Playgroud)
现在在第一行,我有Future的对象的未来,有没有办法将它转换为Future而不阻止我当前的线程?
akka有什么方法吗?据我检查,我还没有找到任何...第一次有一个帖子.... Sry for bad format and organiz ...:~P
Vik*_*ang 42
简答(英文):flatMap dat sh!t
更短的答案(Scala):
flatMap(identity)
Run Code Online (Sandbox Code Playgroud)
最短的回答:(Scala 2.12):
flatten
Run Code Online (Sandbox Code Playgroud)
答案很长(Java):
flatMap(new Mapper<Future<X>>,Future<X>>() {
@Override public Future<X> apply(final Future<X> f) { return f; }
})
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 10
注意:自Viktor Klang 2012年回答以来,他最近(2016年3月)在他的博客中添加 了scala 2.12:
flatten你是我们中的一员
Future吗?他们已经厌倦了旧的flatMap(identity)样板用于未嵌套的期货,如:
val future: Future[Future[X]] = ???
val flattenedFuture /*: Future[X] */ = future.flatMap(identity)
Run Code Online (Sandbox Code Playgroud)
然后我有一些好消息给你!从Scala 2.12开始,
scala.concurrent.Future将使用具有以下签名的flatten方法:
def flatten[S](implicit ev: T <:< Future[S]): Future[S]
Run Code Online (Sandbox Code Playgroud)
允许你写:
val future: Future[Future[X]] = ???
val flattenedFuture /*: Future[X] */ = future.flatten
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12993 次 |
| 最近记录: |