Dart 如何清理省道未来超时?
我是Dart新手,目前处理的类如下所示:Dart 如何清理省道未来超时?,dart,Dart,我是Dart新手,目前处理的类如下所示: abstract class Resource { Future<void> close(); static Future<Resource> create() { // ... } } typedef dynamic _Close(); extension TimeoutClose<T> on Future<T> { Future<T> timeoutThenCl
abstract class Resource {
Future<void> close();
static Future<Resource> create() {
// ...
}
}
typedef dynamic _Close();
extension TimeoutClose<T> on Future<T> {
Future<T> timeoutThenClose(Duration timeLimit, {FutureOr<T> onTimeout()?}) {
var expired = false;
return this.then((v) {
if (expired) {
final close = (v as dynamic).close;
if (close is _Close) {
close();
}
}
return v;
}).timeout(timeLimit, onTimeout: () {
expired = true;
return onTimeout != null
? onTimeout()
: throw TimeoutException("Future not completed", timeLimit);
});
}
}