我将使用Dispatch编写一个简单的HTTP客户端 . 我打电话给 dispatch.Http
以获得未来并致电未来以获得回应
val request = ...
val future = Http(request) // call the server asynchronously
val response = future() // wait for the response from the server
现在我想知道如何等待超时 . 我想最后一次API调用是:
// throw an exception if no response received within timeout
val response = future(timeout: Long)
是否有意义 ?
我明白 Dispatch
返回 scala.concurrent.Future
,它不提供带超时的API . 你会如何建议我实施它?
2 回答
首先,您可以使用Await:
问题是,如果未来无法在指定的超时时间内返回,它将抛出异常 .
如果您需要更多灵活性,那么第二种方法是:
您可以创建配置的Http客户端:
val httpApplicationClient = Http.configure(_. setRequestTimeoutInMs(3000))
val future = httpApplicationClient(request)
...