Observable只发射一个对象,因此始终使用Action1
调用doOnNext()
。我怎样才能以类似的方式使用Action2
?
我可以组合2个可观察者来调用Action2
吗?
编辑:我为什么要这样做?我正在制作一个结帐应用。我认为,为了正确显示,它需要两个数据(1:tip%和2:总成本)。因此,如果此视图可以作为Action2
对可观察序列做出反应,我会很高兴。
EDIT2:这是前面提到的视图的方法。如果这是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());
};
}
答案 0 :(得分:0)
像withLatestFrom
这样的运算符可以将多个序列组合成一个序列。如果您能采用这种思维方式,即单一数据类型序列,我认为您将更适合使用Rx。
为此,我建议创建一个包含所需数据类型的类型。然后,您可以合并数据,然后将单个值传递给doOnNext
处理程序*。
在大多数语言中,这是Rx用于(C#,F#,JS,Scala)的简单内容,但在Java中,您可能必须实际声明/定义类型才能执行此操作。见 - A Java collection of value pairs? (tuples?)
*请尽量避免使用Do
副作用运算符。几乎总有一种更好的方法。在您的示例中,看起来您正在该处理程序中执行一些重要工作(创建,添加和删除选项卡,我假设它们是可视控件)