2013-07-17 54 views
1

我想將Promise<WS.HttpResponse>的集合傳遞給承諾的waitAll。因此,例如,我不想通過r1,r2r3,而是想將其添加到列表或集合中,並將它們傳遞給waitAll。請幫助如何將答覆的集合傳遞給承諾

公共類AsyncTest擴展控制器{

public static void remoteData() { 
    F.Promise<WS.HttpResponse> r1 = WS.url("http://example.org/1").getAsync(); 
    F.Promise<WS.HttpResponse> r2 = WS.url("http://example.org/2").getAsync(); 
    F.Promise<WS.HttpResponse> r3 = WS.url("http://example.org/3").getAsync(); 

    F.Promise<List<WS.HttpResponse>> promises = F.Promise.waitAll(r1, r2, r3); 

    // Suspend processing here, until all three remote calls are complete. 
    List<WS.HttpResponse> httpResponses = await(promises); 

    render(httpResponses); 
    } 
} 
+0

sooo ...你想合併列表嗎?這就是你問的問題? –

+0

@LiranElisha我想合併reposnse,因爲它們可能超過3,也許就像180,如果我不得不創建r1,r2,r3,r4,r5,r6 .... r180,那麼它就不對。我會動態創建所有承諾請求,所以我想將一個集合傳遞給F.Promise.waitAll(somecollection)。我很難創建對Promise.waitAll方法的響應集合 –

回答

0

所以爲了保持一些承諾,我會建議簡單地用一個列表。這很簡單,很容易,很多示例的方式來做事情,並可能在這裏很好。 使成員

List<F.Promise<WS.HttpResponse>> newList = new ArrayList<F.Promise<WS.HttpResponse>>(); 

和簡單的方法

public static void addToList(F.Promise<WS.HttpResponse> x) 
{ 
    newList.add(x); 
} 

最後另一種簡單的方法來讓他們等待

public static void makeThemWait() 
{ 
    foreach(F.Promise<WS.HttpResponse> x:newList) 
    { 
     F.Promise.waitAll(x); 
    } 
} 

讓我知道如果它幫助你或u需要進一步的幫助

+0

這有點幫助。我想創建一個可以一次傳遞給Promise.waitAll()的Iterable。否則,我將不得不處理來自每個呼叫的單個響應。無論如何,謝謝你的建議。 –

+0

@JoeThames一個HashSet是可以迭代的,你可以使用它。另外,如果我的答案幫助了你,請接受它 –

+0

你能幫助創建這個散列集嗎?這是語法的樣子:'code'public static F.Promise > waitAll(java.lang.Iterable > promises) –

相關問題