class ChainObservable(Observable): def _subscribe(self, observer): g = CompositeDisposable() def action(scheduler, state): observer.on_next(self.head) g.add(self.tail.merge_observable().subscribe(observer)) g.add(current_thread_scheduler.schedule(action)) return g def __init__(self, head): super(ChainObservable, self).__init__(self._subscribe) self.head = head self.tail = AsyncSubject() def on_completed(self): self.on_next(Observable.empty()) def on_error(self, e): self.on_next(Observable.throw_exception(e)) def on_next(self, v): self.tail.on_next(v) self.tail.on_completed()
class ChainObservable(ObservableBase): def _subscribe_core(self, observer, scheduler=None): g = CompositeDisposable() def action(scheduler, state): observer.on_next(self.head) g.add(self.tail.merge_all().subscribe(observer, scheduler)) g.add(scheduler.schedule(action)) return g def __init__(self, head): super().__init__() self.head = head self.tail = AsyncSubject() def on_completed(self): self.on_next(Observable.empty()) def on_error(self, error): self.on_next(Observable.throw(error)) def on_next(self, value): self.tail.on_next(value) self.tail.on_completed()
def wrapper(*args): subject = AsyncSubject() def action(scheduler, state): try: result = func(*args) except Exception as ex: subject.on_error(ex) return subject.on_next(result) subject.on_completed() scheduler.schedule(action) return subject.as_observable()
def action1(scheduler, state=None): subject[0] = AsyncSubject()
def action1(scheduler, state=None): nonlocal subject subject = AsyncSubject()
def __init__(self, head): super(ChainObservable, self).__init__(self._subscribe) self.head = head self.tail = AsyncSubject()
def __init__(self, head): super().__init__() self.head = head self.tail = AsyncSubject()