Главная »
2015 » Сентябрь » 14 » Пример рефакторинга с Фьючерами
09:51 Пример рефакторинга с Фьючерами |
Собираюсь отрефакторить код вызова удалённых сервисов следующим образом:Допустим, нам нужно создать запрос, асинхронно вызвать сервис с этим запросом, и обработать ответ. У нас уже есть для этого следующие функции:
def makeRequest(x: Int): Request = ??? // не бросает исключений
def invokeService(req: Request): Future[Response] = ???
def handleResponse(resp: Response): String = ??? // бросает исключенияТогда я предлагаю "привести" эти функции к виду A => Future[B] (это и есть ключевой момент) и скомпозировать их следующим образом:val service = {
val request = x: Int => Future.successful(makeRequest(x))
val response = resp: Response => Future.fromTry(Try(handleResponse(resp)))
Kleisli(request)
|
Просмотров: 336 |
Добавил: admin
| Рейтинг: 0.0/0 |