我想做什么:
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))
这确实很干净,但是问题在于回调仅将数据推送一次。我希望回调函数将数据不断推送到可观察对象中。