0

下面的(简化的)示例最好地描述了我的问题:

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

  • 对资源 A 执行 GET
  • GET 完成后,立即对资源 B 执行 GET

我的具体问题是,如何从 Mapper 中返回 Future ,而 resourceB 不必是 type 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返回 a Future,而该Future#map方法希望我传递一个映射器,该映射器从提供的值同步映射。

Promises/AJavaScript 世界中,我习惯于承诺处理程序能够将承诺返回到一个值或一个值。

4

1 回答 1

0

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

于 2013-04-29T07:06:08.180 回答