scala - 如何将 Future[String] 转换为 String 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)
}
}
解决方案
您可以完全切换到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)
)
)
}
}
推荐阅读
- momentjs - momentjs - 将 PM 时间字符串转换为时刻无法正常工作
- php - Laravel:在选择框上显示 stdClass 对象值
- java - 为什么 Java TinyB 看不到 hcitool 看到的相同设备?
- java - 如何在 Jenkins 中查看 excel 报告?
- python - 如果值不包含字符串,则用正则表达式替换 Pandas Dataframe 中的值
- sql - 在此示例中如何连接两个表
- java - ListView中的Android项目点击监听器
- javascript - 制作一个在特定时间开始运行的 pubsub 函数
- javascript - 当我尝试在 Google Scripts 中使用数组映射函数时出现语法错误。为什么?
- node.js - 打字稿云功能未编译