我对scala非常陌生,如果你能帮助我解决以下问题,我将不胜感激。
我使用akka-http发送http请求我想声明一个通用的发送请求方法,它将使用Unmarshall的http响应正文转换为泛型类型。
我应该如何施放Unmarshal回应给T?如何反编组用作方法返回值的泛型类型?
发送请求的实现:
def sendRequest[T](requestMessage :HttpRequestMessage) :Future[T] = { val promise = Promise[HttpResponse]() val request = requestMessage.request -> promise queue.offer(request).flatMap { case QueueOfferResult.Enqueued => promise.future.flatMap[AnyRef] { response => { response.entity.toStrict(FiniteDuration(3,"seconds")).flatMap { strict => Unmarshal(strict.getData).to[T] } } } } }
谢谢:)你的解释确实帮助我取得了进展 –
@Zfanya Leib很高兴听到这一点。因为你看起来很新,所以让我解释一下 - 理想情况下,每个问题都应该“最终确定”。这意味着由于某种原因应答或关闭。如果你得到了你需要的帮助,你应该接受最有用的答案,否则你可以编辑它并提供更多细节。没有被接受的答案的问题可能会吸引其他想尝试帮助你的人,如果你已经拥有了你需要的一切,这是浪费每个人的时间。当然,许多问题还没有得到解答,这就是为什么回答者应该被标记为这样。 – slouc