如何将.doOnNext()与Action2(RxJava)一起使用



Observables只发出一个对象,所以doOnNext()总是用Action1来调用。 如何以类似的方式使用Action2

我可以组合 2 个可观察量称为Action2吗?

编辑:我为什么要这样做?我正在开发一个结账应用程序。我有一个观点,为了正确显示,它需要两条数据(1:tip%和2:总成本)。因此,如果这种观点可以作为Action2对可观测序列做出反应,我会很高兴。

编辑2:这是前面提到的视图上的一种方法。如果这是一个Action1,我可以很容易地像对待.doOnNext()一样称呼它。是否有运算符可以与.doOnNext()类似操作,但将Action2作为参数?也许像withLatestFrom()这样的东西需要Action2而不是Func2

public Action2<Money, List<Integer>> displayGratuityOptions() {
        return (subtotal, gratuityPercents) -> {
            removeAllTabs();
            for (final Integer percent : gratuityPercents) {
                addTab(createTab(subtotal, percent));
            }
            addTab(createCustomGratuityTab());       
        };
    }

withLatestFrom这样的运算符可以将多个序列组合成一个序列。我认为,如果您可以采用这种思维方式,即单一数据类型序列,您将更好地使用 Rx。

为此,我建议创建一个具有所需数据类型的类型。然后,可以合并数据,然后将单个值传递给doOnNext处理程序*。

这在大多数使用Rx的语言(C#,F#,JS,Scala)中都是简单的东西,但在Java中,你可能必须实际声明/定义一个类型才能做到这一点。请参阅 - 值对的 Java 集合?(元组?

*请尽量避免使用Do副作用运算符。几乎总是有更好的方法。在您的示例中,看起来您正在该处理程序中执行一些重要的工作(创建,添加和删除选项卡,我认为这些选项卡是可视控件)

相关内容

  • 没有找到相关文章

最新更新