我需要为 http 请求设置超时时间。
我已阅读 Set timeout for HTTPClient get() request,它建议我们使用 http.get(...).timeout(...)
。
但是,我很担心:.timeout
是 Future
类中的一个方法。因此,即使超时,http请求仍在进行中!换句话说,如果 http 请求实际上需要,比如说,30 秒来完成,而我们使用 timeout(Duration(seconds: 5))
,那么即使看起来好像我们已经中止了请求,它实际上仍然消耗资源用户的手机再停留 25 秒。
因此,如果有适当的方法可以使请求超时,我将不胜感激。或者,如果我错了,请纠正我。
附言我知道还有一件事,HttpClient.connectionTimeout
。那是连接阶段,而不是整个请求的时间。有趣的是,当我进入源代码 see here 时,我发现它内部也使用了 some_future.timeout()
。因此,恕我直言,资源也不会在超时时释放。