gpt4 book ai didi

java - 如何解决另一个 promise 中的 promise ?

转载 作者:行者123 更新时间:2023-11-30 04:15:33 24 4
gpt4 key购买 nike

我有一个操作需要从远程服务器获取电子邮件列表。然后我想使用电子邮件从另一个远程服务器获取 emailDomainInformation 列表(请注意,第二条信息取决于第一条信息)。毕竟,我想将两台服务器的数据输出到 map 上,并将其渲染到带有灰尘的页面上。

我设法在没有第二条数据的情况下通过这样做来使其工作:

public static Result index()
{
F.Promise<Email> emailPromise = getEmailPromise(...);
F.Promise<Result> results = emailPromise.map( new F.Function<Email, Result>()
{
public Result apply(Email email)
{
Map<String, Object> data = new HashMap<String, Object>();
data.put("email", email.getAddress());
data.put("domain", email.getDomain());
dustRenderer.render(data);
}
}
async(results);
}

现在,因为我想对 getEmailDomainData(email.getDomain()); 进行异步调用里面emailPromise.map()方法。我该如何处理 Promise<EmailDomain>我回来的对象?我如何将其放入 data map 传至dustRenderer

最佳答案

这是一个基本上满足您需要的示例:

public static Result social() {
final F.Promise<WS.Response> twitterPromise = WS.url("http://search.twitter.com/search.json").setQueryParameter("q", "playframework").get();
final F.Promise<WS.Response> githubPromise = WS.url("https://api.github.com/legacy/repos/search/playframework").get();

return async(
twitterPromise.flatMap(
new F.Function<WS.Response, F.Promise<Result>>() {
public F.Promise<Result> apply(final WS.Response twitterResponse) {
return githubPromise.map(
new F.Function<WS.Response, Result>() {
public Result apply(final WS.Response githubResponse) {
return ok(views.html.social.render(twitterResponse.asJson().findValuesAsText("text"), githubResponse.asJson().findValuesAsText("name")));
}
}
);
}
}
)
);
}

在本例中,两者并行运行,但您可以将第二个 Promise 创建移动到第一个 Promise 的处理程序中。

关于java - 如何解决另一个 promise 中的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18500563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com