execute<T> method

Future<T> execute<T>({
  1. required String method,
  2. required String path,
  3. Map<String, dynamic>? queryParameters,
  4. dynamic data,
  5. String? baseUrl,
  6. required Future<T> requestExecutor(),
})

执行请求(带去重/防抖/节流)

method HTTP 方法 path 请求路径 queryParameters 查询参数 data 请求体数据 baseUrl 可选的 baseUrl(用于去重时区分不同服务) requestExecutor 实际执行请求的函数

返回 Future,相同请求会共享同一个 Future

Implementation

Future<T> execute<T>({
  required String method,
  required String path,
  Map<String, dynamic>? queryParameters,
  dynamic data,
  String? baseUrl,
  required Future<T> Function() requestExecutor,
}) async {
  final requestKey = _generateRequestKey(
    method: method,
    path: path,
    queryParameters: queryParameters,
    data: data,
    baseUrl: baseUrl,
  );

  switch (mode) {
    case DeduplicationMode.deduplication:
      return _executeWithDeduplication<T>(requestKey, requestExecutor);

    case DeduplicationMode.debounce:
      return _executeWithDebounce<T>(requestKey, requestExecutor);

    case DeduplicationMode.throttle:
      return _executeWithThrottle<T>(requestKey, requestExecutor);

    case DeduplicationMode.none:
      return requestExecutor();
  }
}