如何在timeLimit之后超时未来的计算?

时间:2015-11-24 15:09:05

标签: dart dart-html

定义Future时如下:

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 ...(0:00之后的TimeoutException:05.000000:未来未完成)

我错过了什么吗?

2 个答案:

答案 0 :(得分:8)

更改此行

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 :(得分:0)

{{1}}