Java 如何传递对承诺的响应集合

Java 如何传递对承诺的响应集合,java,playframework,playframework-2.0,future,promise,Java,Playframework,Playframework 2.0,Future,Promise,我想将Promise的集合传递给Promise的waitAll。因此,例如,我不想传递r1、r2和r3,而是想将添加到列表或集合中,并将它们传递到waitAll。请帮忙 公共类异步测试扩展控制器{ public static void remoteData() { F.Promise<WS.HttpResponse> r1 = WS.url("http://example.org/1").getAsync(); F.Promise<WS.HttpRespo

我想将
Promise
的集合传递给Promise的
waitAll
。因此,例如,我不想传递
r1
r2
r3
,而是想将添加到列表或集合中,并将它们传递到
waitAll
。请帮忙

公共类异步测试扩展控制器{

   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);
  }
}
publicstaticvoidremotedata(){
F.承诺r1=WS.url(“http://example.org/1getAsync();
F.承诺r2=WS.url(“http://example.org/2getAsync();
F.承诺r3=WS.url(“http://example.org/3getAsync();
F.Promise-promises=F.Promise.waitAll(r1、r2、r3);
//在此暂停处理,直到所有三个远程调用完成。
列出httpResponses=wait(承诺);
呈现(httpResponses);
}
}

因此,为了兑现几个承诺,我建议只使用列表。这是一种简单、容易、有很多例子的做事方式,在这里可能会很好。 入会

List<F.Promise<WS.HttpResponse>> newList = new ArrayList<F.Promise<WS.HttpResponse>>();
List newList=newarraylist();
一个简单的方法

public static void addToList(F.Promise<WS.HttpResponse> x)
{
   newList.add(x);
}
publicstaticvoidaddtolist(F.x)
{
新增(x);
}
最后是另一种让他们等待的简单方法

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

如果这对您有帮助或您需要进一步帮助,请尽快告诉我。

。。。是否要合并列表?这就是你要问的?@LiranElisha我想合并restsse,因为它们可能超过3个,可能有180个,如果我必须创建r1、r2、r3、r4、r5、r6,那就不对了。。。。r180。我将动态创建所有promise请求,以便将集合传递给F.promise.waitAll(somecollection)。我很难对Promise.waitAll方法创建一个响应集合。这有点帮助。我想创建一个可立即传递给Promise.waitAll()的Iterable。否则,我将不得不处理来自每个呼叫的单个响应。无论如何,谢谢你的建议。@JoeThames哈希集是可移植的,你可以使用它。另外,如果我的回答对您有所帮助,请接受我的回答。您可以帮助创建此哈希集吗。语法如下:
code
public static F.Promise waitAll(java.lang.Iterablehere)是使用hashset的一个简单示例: