runLatest<T> method

Future<T?> runLatest<T>(
  1. Future<T> operation(
    1. int generation
    ), {
  2. void onStale(
    1. T value
    )?,
})

Implementation

Future<T?> runLatest<T>(
  Future<T> Function(int generation) operation, {
  void Function(T value)? onStale,
}) async {
  final requestGeneration = beginRequest();
  try {
    final value = await operation(requestGeneration);
    if (!isCurrent(requestGeneration)) {
      onStale?.call(value);
      return null;
    }
    return value;
  } catch (error, stackTrace) {
    if (!isCurrent(requestGeneration)) return null;
    Error.throwWithStackTrace(error, stackTrace);
  }
}