【问题标题】:Play framework 2 multiple async db operationPlay framework 2 多重异步数据库操作
【发布时间】:2015-01-02 18:09:57
【问题描述】:

我正在执行 2 个数据库查询。

1、加载一个实体 2、实体加载后加载信息。

我正在尝试异步执行此操作。我不确定最好的方法是什么。

在 MAP 方法中,函数中的其余代码会被视为异步还是由调用线程执行?

例如

F.Promise<Period> period  = Period.asyncLoad(periodId);

    return period.map(new F.Function<Period, Result>() {
        @Override
        public Result apply(Period period) throws Throwable {
            if ( period == null ) {
                String error = Messages.get("errors.notAvailable", Messages.get("entity.period"),periodId);
                return notFound(helpers.Json.buildError( error ));
            } else {
                Long id = countryId.isDefined() ? countryId.get():null;
                **List<EntitySummary> counts = Notification.count(period, id );**
                return ok(Json.toJson(counts));
            }
        }});
}

如您所见,第二次调用 db List counts = Notification.count(period, id);

最好的方法是什么?我应该把它移到模型层吗?

【问题讨论】:

    标签: playframework playframework-2.3


    【解决方案1】:

    经过一番研究,我想我已经找到了解决方案。需要在第一个 Promise 上使用 flatmap,并使用 flatmaps 链接尽可能多的 Promise,最后一个 Promise 需要处理一个 map 以返回最终结果。

    从这里查看示例:

    http://www.wenda.io/questions/1616410/how-to-nest-promises-in-play-framework-with-java.html

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 2021-11-28
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      相关资源
      最近更新 更多