2013-04-29 54 views
0

我的問題最好是通過以下的(簡化的)實施例中所述返回一個未來:從阿卡映射器

鑑於其上調用其get-方法返回Future<JSON>異步HTTP客戶端。 給定一個資源的鏈接,該資源又包含到另一個資源的鏈接。那麼如何做我的代碼如下:

  • 執行,只要是GET完成GET用於資源A的
  • ,對於資源B執行GET

我的具體問題是,怎麼回事未來從Mapper內部,沒有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我用來承諾處理程序能夠將承諾返回給值或值。

回答

0

我剛剛發現我的問題的答案和使用flatMap而不是map一樣簡單。哎呀。