提问人:Jood Alk 提问时间:11/16/2023 更新时间:11/17/2023 访问量:44
Flutter,在一定时间内实现一个方法
Flutter, implement a method within a certain time
问:
如何在一定时间内实现一个方法,如果时间到了,取消该方法
例如
如果我有一个可能需要 5 秒才能完全实现的方法,并且我希望它在 3 秒内实现,如果这 3 秒过去了并且该方法没有完成,那么请取消它
这可能吗?
答:
1赞
Ravi Patel
11/17/2023
#1
是的,可以实现一种机制来在特定时间范围内执行方法,并在花费太长时间时取消它。Dart 提供了一个 Future 类和 Future.timeout 构造函数,它允许你为 future 操作设置超时。
下面是如何实现此目的的示例:
import 'dart:async';
void main() {
// Call the method with a timeout of 3 seconds
executeMethodWithTimeout().then(
(result) {
print('Method completed successfully: $result');
},
onError: (error) {
print('Method did not complete within the specified time: $error');
},
);
}
Future<String> longRunningMethod() async {
// Simulate a long-running task
await Future.delayed(Duration(seconds: 5));
// Return a result when the task is complete
return 'Task completed successfully!';
}
Future<String> executeMethodWithTimeout() async {
try {
// Use Future.timeout to set a timeout of 3 seconds
String result = await longRunningMethod().timeout(Duration(seconds: 3));
return result;
} on TimeoutException {
// Handle the timeout
throw 'Timeout: Method took longer than 3 seconds to complete';
}
}
评论
0赞
starball
11/21/2023
在撰写这篇回答文章时,您是否使用了任何生成式 AI?
评论