Rx java 在rxJava 2中订阅相同的订阅服务器

Rx java 在rxJava 2中订阅相同的订阅服务器,rx-java,observable,subscribe,rx-java2,reactive,Rx Java,Observable,Subscribe,Rx Java2,Reactive,在rxJava 1.x中,可以执行以下操作: Observable.<Foo>create(subscriber -> { ... getNewObservable().subscribe(Subscribers.wrap(subscriber)); }) Observable.<Foo>create((ObservableEmitter<Foo> emitter) -> { ... getNewObservabl

在rxJava 1.x中,可以执行以下操作:

Observable.<Foo>create(subscriber -> {
    ...
    getNewObservable().subscribe(Subscribers.wrap(subscriber));
})
Observable.<Foo>create((ObservableEmitter<Foo> emitter) -> {
    ...
    getNewObservable().subscribe(emitter::onNext, emitter::onError, emitter::onComplete);
})
Observable.create(订户->{
...
getNewObservable().subscribe(Subscribers.wrap(subscriber));
})
GetNewObservable()也返回
Observable

我在RXJava2中找不到相同的方法。在可观测对象上没有接受发射器或可观测发射器的订阅方法。我想我可以这样做:

Observable.<Foo>create(subscriber -> {
    ...
    getNewObservable().subscribe(Subscribers.wrap(subscriber));
})
Observable.<Foo>create((ObservableEmitter<Foo> emitter) -> {
    ...
    getNewObservable().subscribe(emitter::onNext, emitter::onError, emitter::onComplete);
})
Observable.create((ObservableEmitter-emitter)->{
...
getNewObservable().subscribe(发射器::onNext,发射器::onError,发射器::onComplete);
})
但我想知道是否有像RXJava1这样更直接的方法

谢谢。

1)实现您在评论中描述的一种方法:

Observable.interval(...)
    .map(n -> {
            if (!permissionGranted)
                throw new AccessDeniedException();
            ... // do work
            return result;
        })
2) 另一种方法是:

Observable.interval(...)
    .flatMap(n -> {
            if (permissionGranted) {
                ... // do work
                return Observable.just(result);
            } else {
                return Observable.error(new AccessDeniedException());
            }
        })
3) 还有一种方法(只检查一次权限):

4) 还有一个(反应最强烈的):

您可以将其重构为:

askForPermission().andThen(getNewObservable())

用这种不明显的方法,你到底想达到什么目的?一定有更干净的方法做这件事。请描述你的代码的用途。当然,可能有更多的方法来解决这个问题,但我很好奇RXJava2中是否真的没有等价物。事实上,这本书中提到了这种方法。但回到我的例子,我正在做android库,我想让可观察的巫婆每x分钟做一次动作。所以我有一个可以观测到的计时器。但是“工作”需要授予一些权限。我只是想先检查权限,只有在没有问题的情况下,才订阅可观察的计时器。否则返回onError…这是怎么回事:
if(permissiongrated)返回Observable.interval(…).map(…);否则返回可观察的错误(…)?当然可以,但我不想在创建时检查权限,而是在订阅时检查权限。因此,只有当“包装”可观察到订阅是的,只检查一次权限对我来说就足够了,所以第三个选项是最好的,但不是我所希望的那么优雅。。。那么,就您所知,RXJava2中是否没有等价物呢?我已经调整了选项3并添加了选项4。我认为选项3最接近您的初衷,即将源选择推迟到订阅时间。