我有一个方法,它调用第三方端点来返回Future类型的Provider对象列表。现在我想调用这个方法,并将该对象转换为包含列表的不同的未来对象。以下是模型:
case class ThirdPartyProvidersResponse(providers: List[ThirdPartyProvider])
case class ThirdPartyProvider(
id: String,
config: List[Config]
)
// Convert ThirdPartyProvidersResponse to DomainProvidersResponse
case class DomainProvidersResponse(
providers: List[DomainProviderResponse]
)
case class DomainProviderResponse(
code: Option[DomainProviderType],
enabled: Boolean
)
这是我试图实现的方法签名:
def getProviders(): Future[DomainProvidersResponse]
这是API方法的定义:
def getProvidersList(): Future[ThirdPartyProvidersResponse]
这就是我所尝试的:
def getProviders(): Future[DomainProvidersResponse] = {
var providers: List[DomainProviderResponse] = List()
thirdPartyServiceHttpClient.getProvidersList().map { response =>
response.providers.map { providersList =>
val provider = DomainProviderResponse(
providerCode = DomainProviderType.findByName(providersList.id),
enabled = true
)
providers :+= provider
}
}
Future.successful(DomainProvidersResponse(providers = providers))
}
这段代码的问题在于同步。我需要等待future执行,然后才能返回结果。我们是否可以使用flatMap
立即执行转换而无需显式同步来实现这一点?
任何帮助这是赞赏。我有Java背景,对Scala是个新手。
1条答案
按热度按时间bvjveswy1#
看起来你需要像
map
或for-comprehension这样的东西: