Метод timeout
Отключает вычисление будущего после истечения timeLimit.
Возвращает новое будущее, которое завершается с тем же значением, что и это будущее, если это будущее завершается вовремя.
Если это будущее не завершается до истечения timeLimit, вместо этого выполняется действие onTimeout, и его результат (возвращаемое значение или исключение) используется в качестве результата возвращаемого будущего. Функция onTimeout должна возвращать T или Future<T>.
Если onTimeout опущено, таймаут приведет к завершению возвращаемого будущего с TimeoutException.
Пример:
void main() async {
var result = await waitTask()
.timeout(const Duration(seconds: 10));
print(result); // 'completed'
result = await waitTask()
.timeout(const Duration(seconds: 1), onTimeout: () => 'timeout');
print(result); // 'timeout'
result = await waitTask()
.timeout(const Duration(seconds: 2)); // Throws.
}
Future<String> waitTask() async {
await Future.delayed(const Duration(seconds: 5));
return 'completed';
} Реализация
Future<T> timeout(Duration timeLimit, {FutureOr<T> onTimeout()?});
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Future/timeout.html