cache<T extends Object> method

Future<Response<T>> cache<T extends Object>(
  1. String name, {
  2. bool? enabled,
  3. Iterable<Object?> keyProps = const [],
  4. required Future<Response<T>> callback(),
})

Implementation

Future<Response<T>> cache<T extends Object>(
  String name, {
  bool? enabled,
  Iterable<Object?> keyProps = const [],
  required Future<Response<T>> Function() callback,
}) async {
  enabled ??= false;
  if (!enabled) return callback();
  final k = hashKey(T, name, keyProps);
  final x = _db[k];
  if (x is Response<T> && x.isValid) return x;
  final y = await callback();
  if (y.isValid) _db[k] = y;
  return y;
}