executeAsync<T> method

Future<RxResult<T>> executeAsync<T>()

外部使用 await 方式调用此方法。 结果从 RxResult 中获取 此方式不支持 同时请求和读取缓存策略。

Implementation

Future<RxResult<T>> executeAsync<T>() async {
  Completer<RxResult<T>> completer = Completer();
  if (!(await _checkNetWork())) {
    return completer.future;
  }
  _cacheMode ??= (_rxNet._baseCacheMode ?? CacheMode.onlyRequest);
  if (_cacheMode == CacheMode.requestFailedReadCache ||
      _cacheMode == CacheMode.cacheNoneToRequest) {
    _cacheMode = CacheMode.onlyRequest;
  }

  if (_cacheMode == CacheMode.firstCacheThenRequest) {
    _cacheMode = CacheMode.onlyCache;
  }

  if (_cacheMode == CacheMode.onlyRequest) {
    _doWorkRequest<T>(success: (data, model) {
      _successHandler<T>(completer, data: data, model: model);
    }, failure: (e) {
      _errorHandler<T>(completer, model: SourcesType.net, error: e);
    });
  }

  if (_cacheMode == CacheMode.onlyCache) {
    _readCache<T>((data, model) {
      _successHandler<T>(completer, data: data, model: model);
    }, (e) {
      _errorHandler<T>(completer, model: SourcesType.cache, error: e);
    }, null);
  }
  return completer.future;
}