当前位置: 首页 > 面试题库 >

可观察到的在onNext()中不传递任何内容

杜焕
2023-03-14
问题内容

我将需要一个Observable,例如提供一个系统时钟,它不需要在onNext()中传递任何内容。我找不到允许我这样做的签名。

当然,我可以使用任何对象,然后传递null,但这没有多大意义。所以我的问题是,是否有更好的方法可以做到这一点。

Observable.create(new Observable.OnSubscribe<Anyobject>() { // use any object in the signature

            @Override public void call(Subscriber<? super Anyobject> subscriber) {

                    subscriber.onNext(null); // then pass null
                    subscriber.onCompleted();

            }

        })

问题答案:

onNext如果您Observable不发出任何声音,则无需致电。您可以使用Void签名来做类似的事情

Observable<Void> o = Observable.create(new Observable.OnSubscribe<Void>() {
    @Override
    public void call(Subscriber<? super Void> subscriber) {
        // Do the work and call onCompleted when you done,
        // no need to call onNext if you have nothing to emit
        subscriber.onCompleted();
    }
});

o.subscribe(new OnCompletedObserver<Void>() {
    @Override
    public void onCompleted() {
        System.out.println("onCompleted");
    }

    @Override
    public void onError(Throwable e) {
        System.out.println("onError " + e.getMessage());
    }
});

您可以定义一个OnCompletedObserver来简化您的Observer回调,这样您就不必覆盖onNext,因为您不需要它。

public abstract class OnCompletedObserver<T> implements Observer<T> {
    @Override
    public void onNext(T o) {

    }
}

如果我了解您的要求,那么就可以解决问题。



 类似资料:
  • 问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。

  • 当控制器对DataModel中的String statusText进行更改时,我调用setChanged()&notifyObservers(This.statusText),然后在Display类中调用update(Observable o,Object arg)。 我的问题是,当我有多个字符串用于不同的标签时,我应该如何继续?我的第一个想法是将所有字符串放入一个列表中,然后更新方法看起来如下所

  • 我对RxJava很陌生,每当我有一个情况,我需要从链上的一个可观察的返回数据传递到调用“订阅” - 我很难理解如何在没有任何补丁的情况下以“反应式”方式做到这一点...... 例如: 我想发出obs1和obs2,得到它们的结果,然后发出obs3然后obs4,然后以订阅结束链,同时可以访问obs1、obs2、obs3和obs4的结果。 调用的顺序很重要,我需要在执行obs3之前完成obs1和obs2

  • 我正在使用RxJava链接异步操作,我想向下游传递一些变量: 这似乎是一种常见的模式,但我找不到有关它的信息。

  • 我来自同步编程背景,我很难理解可观察性。 这是我的服务/提供商的摘录(离子2项目) 我将从订阅它。关于这一点,我有几个问题。 > 即使我没有声明,上面的代码是否返回一个可观察/观察者? 响应是JSON。如何检查/处理JSON并执行一些操作,如 那就做吧 我认为应该在提供者类中完成。只是一个典型的提示/例子将是真棒。 当请求到达subscribe方法时,它是否真的发生了? 创建和返回Angular

  • 问题内容: 考虑以下示例: 这将输出从1到5的数字,然后打印异常。 我要实现的是使观察者保持订阅状态,并在引发异常后继续运行,即打印从1到10的所有数字。 我曾尝试使用和其他各种错误处理运算符,但是,正如文档中所述,它们的目的是处理可观察对象自身发出的错误。 最直接的解决方案是将整个过程包装到try- catch块中,但这对我来说似乎不是一个好的解决方案。在类似的Rx.NET问题中,提出的解决方案