2
我正在尝试将AsyncHttpClient和Scalaz Task结合在一起。通常,如果我使用AsyncHttpClient,我可以调用client.close来停止客户端。如何在scalaz中关闭AsyncHttpClient任务
val asyncHttpClient = new AsyncHttpClient()
println(asyncHttpClient.prepareGet("http://www.google.com"))
asyncHttpClient.close()
因此电流将停止。但是,如果我将api调用包装到Task中。我不知道如何阻止它。
def get(s: String) = Task.async[Int](k => {
asyncHttpClient.prepareGet(s).execute(toHandler)
Thread.sleep(5000)
asyncHttpClient.closeAsynchronously()
})
def toHandler[A] = new AsyncCompletionHandler[Response] {
def onCompleted(r: Response) = {
println("get response ", r.getResponseBody)
r
}
def onError(e: Throwable) = {
println("some error")
e
}
}
println(get("http://www.google.com").run)
当前Process仍在运行。我在想,原因是Task和AsynClient都是异步的。我不知道我应该做些什么来关闭它
很多感谢
这很有道理:)谢谢 –
@Travis是的,'closeAsynchronously'正在消失。它似乎没有多大价值,如果你想要这样做,那么你很有可能在你最喜欢的异步环境中运行AHC,并且可以自己实现它。当然,反馈欢迎。 –