system.reactive - 相当于ReactiveCocoa的RACObserve的RxJava(或Rx.NET)

标签 system.reactive reactive-programming reactive-cocoa rx-java

给定Java对象上的任意字段,我想创建一个Observable,它将监视该字段,并在每次字段值更改时将新结果推送到Observer。 ReactiveCocoa有一个称为RACObserve的宏,它似乎正是在这样做。

我想知道如何使用RxJava实现类似的功能。

例如,假设我有以下简单的类:

public class Foo {
    enum State {
        Idle,
        Ready,
        Error
    }

    private State currentState = State.Idle;

    //methods that can change currentState
}

我想创建一个Observable<State>,每次更改currentState的值时,它将新状态推送到Observer。

在ReactiveCocoa中,看起来我将编写如下内容(请原谅我的伪Objective-C):
[RACObserve(self, currentState) subscribeNext:^(NSString *newState) {
    NSLog(@"%@", newState);
}];

我如何在RxJava中实现类似的功能?我在想可能需要将对currentState的所有更改包装在setter中,但是我不清楚我应该在哪里调用Observable.create以及如何将currentState的更改提供给Observer。

最佳答案

实际上,ReactiveCocoa与ReactiveUI(http://www.reactiveui.net)更为相似,而不仅仅是纯Rx。在ReactiveUI中,您可以使用this.WhenAnyValue(x => x.PropName)来做您想要的事情。

关于system.reactive - 相当于ReactiveCocoa的RACObserve的RxJava(或Rx.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21201304/

相关文章:

c# - BlockingCollection 与 Subject 用作​​消费者

javascript - Rx (RxJS) 网址生成器

c# - RX2.0 : ObjectDisposedException after diposing EventLoopScheduler

android - RxJava2 类似于 Android 中的 AsyncTask

javascript - 重用数据流一段时间

ios - ReactiveCocoa 结合最新的按钮按下和文本字段委托(delegate)信号

swift - 一般在 SignalProducer 中注入(inject)副作用

c# - 压缩或合并两个IObservable序列,其中一个序列可能会失败

javascript - "current value"独立于订阅者的概念

ios - 如何在 ReactiveCocoa (Swift) 中将 NSError SignalProducer 转换为 NoError SignalProducer