Главная » 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
Всего комментариев: 0
avatar