从 akka 映射器返回未来
Posted
技术标签:
【中文标题】从 akka 映射器返回未来【英文标题】:Returning a Future from an akka Mapper 【发布时间】:2013-04-29 06:46:06 【问题描述】:下面的(简化的)示例最好地描述了我的问题:
给定一个异步 HTTP 客户端,它在调用其 get 方法时返回 Future< JSON >
。
给定一个指向某个资源的链接,该链接又包含指向另一个资源的链接。那么我该如何编写以下代码:
我的具体问题是,如何从 Mapper 中返回 Future,而不需要 resourceB 的类型为 Future< Future < JSON > >
。基本上,我想写的是以下内容:
Future< JSON > resourceA = httpClient.get( "http://..." );
Future< JSON > resourceB = resourceA.map( new Mapper< JSON, Future< JSON > >()
public JSON apply( JSON resourceARepr )
return httpClient.get( resourceARepr.getString( "linkToResourceB" ) );
);
但是,这不会编译,因为 httpClient#get
返回一个 Future
,而 Future#map
方法希望我传递一个映射器,该映射器从提供的值同步映射。
从 javascript 世界中的Promises/A
开始,我习惯于承诺处理程序能够将承诺返回到一个值或一个值。
【问题讨论】:
【参考方案1】:我刚刚发现我的问题的答案就像使用 flatMap 而不是 map 一样简单。哎呀。
【讨论】:
以上是关于从 akka 映射器返回未来的主要内容,如果未能解决你的问题,请参考以下文章