【问题标题】:How to pass a collection of responses to a promise如何将响应集合传递给承诺
【发布时间】:2013-07-18 03:10:21
【问题描述】:

我想将Promise<WS.HttpResponse> 的集合传递给promise 的waitAll。例如,我不想传递r1r2r3,而是将其添加到列表或集合中并将它们传递给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);
  }
}

【问题讨论】:

  • sooo...您要合并列表吗?这就是你的要求?
  • @LiranElisha 我想合并reposnse,因为它们可能超过3,可能像180,如果我必须创建r1,r2,r3,r4,r5,r6.. .. r180。我将动态创建所有承诺请求,因此我想将一个集合传递给 F.Promise.waitAll(somecollection)。我很难创建对 Promise.waitAll 方法的响应集合

标签: java playframework playframework-2.0 future promise


【解决方案1】:

所以为了履行几个承诺,我建议简单地使用一个列表。它很简单,容易,有很多做事的例子,在这里可能很好。 加入会员

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);
   }
}

如果它对您有帮助或您需要进一步的帮助,请告诉我

【讨论】:

  • 这有点帮助。我想创建一个可以立即传递给 Promise.waitAll() 的 Iterable。否则,我将不得不处理来自每个呼叫的单个响应。不管怎样,谢谢你的建议。
  • @JoeThames HashSet 是 Iterable,你可以使用它。另外,如果我的回答对你有帮助,请采纳
  • 你能帮忙创建这个哈希集吗?语法如下所示:codepublic static F.Promise> waitAll(java.lang.Iterable> promises)跨度>
  • 这里是一个使用hashset的简单例子:tutorialspoint.com/java/util/hashset_iterator.htm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2017-07-16
  • 2018-07-03
  • 2015-06-06
  • 2017-08-07
  • 2021-04-06
  • 1970-01-01
相关资源
最近更新 更多