【问题标题】:RxJava ignore onNextRxJava 忽略 onNext
【发布时间】:2016-09-02 10:39:28
【问题描述】:

我正在使用 Retrofit 调用一个 url,我不关心结果。反正有没有忽略 onNext 方法?

目前我正在使用:

getRetrofit().create(UserAPI.class)
        .doSomething(a, b)
        .subscribeOn(Schedulers.newThread())
        .subscribe(t -> {}, Handler::handlerError);

如你所见,t -> {} 什么都不做,我想减少它:

getRetrofit().create(UserAPI.class)
            .doSomething(a, b)
            .subscribeOn(Schedulers.newThread())
            .subscribe(null, Handler::handlerError);

但得到错误

java.lang.IllegalArgumentException: onNext can not be null

【问题讨论】:

    标签: java rx-java reactive-programming rx-android reactivex


    【解决方案1】:

    您可以从Retrofit 界面返回Completable,而不是Observable。它的用途与您需要的完全相同。

    【讨论】:

      【解决方案2】:

      如果您还想进行错误处理,我认为在订阅 observable 时没有办法避免 onNext() 实现。或者,您可以创建一个 Observer 并在您的 subscribe 调用中重用它,但您仍然需要实现 onNext() 行为。

      例子:

      Observer errorObserver = Observers.create(t -> {}, Handler::handleError);
      
      getRetrofit().create(UserAPI.class)
                  .doSomething(a, b)
                  .subscribeOn(Schedulers.newThread())
                  .subscribe(errorObserver);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        • 2019-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多