checkTimeOut<T> static method
- 检查
future
的执行是否超时
该函数只会在future
完成后才会调用onDone
并返回结果
- 注意,部分阻塞会导致
startTime
和endTime
在future
一段时间后返回后仍然相等,
导致isTimeOut
永远为false
。例如win端调用系统选择文件夹路径接口
Implementation
static Future<T?> checkTimeOut<T>(
Future<T> future,
Duration duration, {
FutureOr<T?> Function(T value, bool isTimeOut)? onDone,
}) async {
final startTime = DateTime.now().millisecondsSinceEpoch;
final value = await future;
if (null == onDone) {
return value;
}
final endTime = DateTime.now().millisecondsSinceEpoch;
return onDone.call(
value,
// 时间差大于限定值
(endTime - startTime) >= duration.inMilliseconds,
);
}