我正在寻求一个流程的例子,我试图在RxJava的帮助下实现.
假设我想显示一个数据列表.流程应如下所示:
向服务器发送API请求:
如果它返回了数据,则将其缓存并显示.
如果它返回并且错误且没有缓存数据,则显示错误.
如果它返回并且错误并且有缓存的内容,那么什么都不做.
现在我有一种方法可以做类似的事情(从Jake的u2020获得很多灵感).主要区别在于它使用内存缓存,这意味着不需要单独Observable从缓存中读取,它可以同步完成.
我不知道如何组合两个observable(一个用于从缓存读取而另一个用于API调用)并获得上述流程.
有什么建议?
这是我的解决方案:
readDataFromCache().defaultIfEmpty(null)
        .flatMap(new Func1<Data, Observable<Data>>() {
            @Override
            public Observable<Data> call(final Data data) {
                if (data == null) {
                    // no cache, show the data from network or throw an error
                    return apiCall();
                } else {
                    return Observable.concat(
                            Observable.just(data),
                            // something cached, show the data from network or do nothing.
                            apiCall().onErrorResumeNext(Observable.<Data>empty()));
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)
我没有添加subscribeOnandobserveOn因为我不确定readDataFromCache()是否应该使用ioScheduleror uiScheduler。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           6195 次  |  
        
|   最近记录:  |