[英]Dart async/await encapsulation
我想返回小數部分,但是如果該函數花費太多時間,則該函數必須放棄。 我試過了,但是沒用...我可能做錯了什么。 你能告訴我我的錯誤嗎?
String decimalToFractional(double d) async {
var df = 1.0;
var top = 1;
var bot = 1;
var future = new Future<String>(() {
while (df != d) {
if (df < d) {
top += 1;
} else {
bot += 1;
top = (d * bot).toInt();
}
df = top / bot;
}
return new Future.value('$top/$bot');
});
future.timeout(new Duration(seconds: 2), onTimeout: () => new Future.value(d.toString()));
return await future;
}
此代碼存在幾個問題。 如果要返回異步操作的結果,則返回類型必須為Future<...>
Future<String> decimalToFractional(double d) async {
然后,您可以像這樣消耗結果
main() async {
print(await decimalToFractional(123456789.123456789));
}
如果希望超時生效,則需要返回事件循環。 只要同步執行正在運行,超時就不會觸發。 另請參閱https://stackoverflow.com/a/22473556/217408
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.