【问题标题】:Scala Found Unit Expected Future[Result]Scala 发现单位预期未来[结果]
【发布时间】:2022-11-08 00:29:57
【问题描述】:
def update() = AuthAction.async(parse.json) { implicit request =>

  val list = request.body.asInstanceOf[JsArray].value

  list.foreach( mapping => {
      repository.update()
  }.andThen {
    case Success(value) => repository.update2()
    case Failure(exception) => {
    BadRequest(errorResponse(Json.toJson(""), "updation failed"))
  }
 })

}

我有一个控制器功能,我想等待数据库回购功能( repository.update2() )完成然后发送响应,但它说“找到单位预期未来[结果]”

【问题讨论】:

  • 使用map / flatMap 而不是andThen - 此外,您可能还想要Future.traverse 而不是foreach
  • 另外,update 是否返回Future?如果没有,请不要使用AuthAction.async,而只需使用AuthAction。如果是,请确保每个代码分支中的类型一致:案例Failure 不返回Future

标签: scala playframework future


【解决方案1】:

您的成功子句可能是在需要 Future 响应的地方返回 Unit 。尝试这个:

.andThen {
    case Success(value) =>
        repository.update2()
        Future.successful(Ok("repository updated"))
    case Failure(exception) =>
        Future.successful(BadRequest(exception.getMessage())))
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2011-08-09
    • 2010-09-22
    • 2021-05-17
    • 2018-02-19
    相关资源
    最近更新 更多