小编dir*_*rls的帖子

如何在RxJava中继承Observable?

我知道你应该不惜一切代价避免这种情况,但如果我在RxJava中有一个子类Observable的有效用例怎么办?可能吗?我怎么能这样做?

在这种特定情况下,我有一个"存储库"类,它当前返回请求:

class Request<T> {
    public abstract Object key();
    public abstract Observable<T> asObservable();

    [...]

    public Request<T> transform(Func1<Request<T>, Observable<T>> transformation) {
        Request<T> self = this;
        return new Request<T>() {
             @Override public Object key() { return self.key; }
             @Override public Observable<T> asObservable() { return transformation.call(self); }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我使用transform方法在需要请求键的上下文中修改响应observable(asObservable)(如缓存):

 service.getItemList() // <- returns a Request<List<Item>>
     .transform(r -> r.asObservable()
             // The activity is the current Activity in Android
             .compose(Operators.ensureThereIsAnAccount(activity))
             // The cache comes last because we don't need auth for cached responses …
Run Code Online (Sandbox Code Playgroud)

rx-java

17
推荐指数
1
解决办法
6507
查看次数

标签 统计

rx-java ×1