executeAsync<T> method
外部使用 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;
}