2015-11-24 20 views
1

在定义未来如下:如何超时timeLimit后的未来计算?

Future<HttpRequest> httpRequest = HttpRequest.request(url, 
     method: method, requestHeaders: requestHeaders); 

我想以后5个secondes处理超时。我在写我的代码是这样的:

httpRequest.timeout(const Duration (seconds:5),onTimeout : _onTimeout()); 

凡我超时功能是:

_onTimeout() => print("Time Out occurs"); 

按照Future timeout() method documentation,如果省略onTimeout,超时将导致返回未来与完成TimeoutException。但我的代码,我的方法_onTimeout()正确调用(但马上,而不是之后5秒),我总是在5秒后得到

TimeException ......(后TimeoutException异常0:00:05.000000:未来没有完成)

我错过了什么吗?

回答

4

改变这一行

httpRequest.timeout(const Duration (seconds:5),onTimeout : _onTimeout()); 

httpRequest.timeout(const Duration (seconds:5),onTimeout :() => _onTimeout()); 

或只是通过一个参考函数(不()

httpRequest.timeout(const Duration (seconds:5),onTimeout : _onTimeout); 

这样调用_onTimeout()将关闭传递给timeout()。 在前代码中,_onTimeout()调用的结果将传递给timeout()

+1

或者它可以简单地为'onTimeout:_onTimeout'(不带圆括号)。 –

+0

当然,这是更好的,谢谢你的提示! –