从回调可观察到RxPY

时间:2019-02-28 18:11:05

标签: python python-2.7 callback rx-py

我想做什么:

o = Observable()
o.subscribe(lambda d: "Do something with the data: " + str(data))
setup_callback(o.push)

从单独的线程中调用回叫。我想要的是,可观察对象将其进入管道的任何数据点推送。在回调上下文中运行管道是可以的。

到目前为止,我是如何解决此问题的:

class MyObservable(Observable):
    def __init__(self):
        self._observers = []
        self._lock = threading.Lock()

    def subscribe(self, on_next, *others):
        with self._lock:
            self._observers.append(on_next)

    def push(self, data):
        with self._lock:
            for observer in self._observers:
                observer(data)

o = MyObservable()
o.subscribe(lambda d: "Do something with data: " + str(data))
setup_callback(o.push)

我必须使用Python2,因此必须使用RxPY 1.6.x。

是否有解决此问题的简便方法?在我自己的对象中处理订阅感觉不对。

更新

我找到了from_callback方法。我不知道我怎么想念那个。

o = Observable.from_callback(setup_callback)()
o.subscribe(lambda d: "Do something with the data: " + str(data))

这确实很干净,但是问题在于回调仅将数据推送一次。我希望回调函数将数据不断推送到可观察对象中。

0 个答案:

没有答案