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;
}