如何将Future [String]转换为String scala?

时间:2018-09-25 11:16:15

标签: scala

我有一个接受字符串参数def externalServerError(response: String)的函数,我无法发送我的Future [String]参数 我试图将函数更改为def externalServerError(response: Future[String]),但它给出了一个错误,因为在内部,我使用了库ServerErrorRequestException中的类,该类期望Option [String]。这是完整的代码:

 def externalServerError(response: String): ErrorInfo = {
    val apiException = ServerErrorRequestException(
      message = Some(response)
    )
    apiExceptionToErrorInfo(apiException)
  }

}

1 个答案:

答案 0 :(得分:1)

您可以完全切换到async

def externalServerError(response: Future[String]): Future[ErrorInfo] = {
    response.map(str =>
       apiExceptionToErrorInfo(
          ServerErrorRequestException(
            message = Some(str)
         )
       )
    )
  } 
}

或使用Await(认为样式不好!

def externalServerError(response: Future[String]): Future[ErrorInfo] = {
    val str = Await.result(response, 1.second)
    apiExceptionToErrorInfo(
       ServerErrorRequestException(
         message = Some(str)
       )
    )
  } 
}