2015-11-24 18 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

當然,這是更好的,謝謝你的提示! –