从akka Mapper返回未来

时间:2013-04-29 06:46:07

标签: java akka future

我的问题最好由以下(简化)示例描述:

给定一个异步HTTP客户端,它对get-Method的调用返回Future< JSON >。 给定到资源的链接,该资源又包含到另一个资源的链接。然后我如何编写以下代码:

  • 执行资源A的GET
  • GET完成后,执行资源B的GET

我的具体问题是,如何在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开始,我习惯于让处理程序能够将promise返回给值或值。

1 个答案:

答案 0 :(得分:0)

我刚刚发现问题的答案就像使用flatMap而不是map一样简单。糟糕。