- RxPY Tutorial
- RxPY - Home
- RxPY - Overview
- RxPY - Environment Setup
- RxPY - Latest Release Updates
- RxPY - Working with Observables
- RxPY- Operators
- RxPY - Working With Subject
- RxPY - Concurrency Using Scheduler
- RxPY - Examples
- RxPY Useful Resources
- RxPY - Quick Guide
- RxPY - Useful Resources
- RxPY - Discussion
RxPY - Connectable Operators
publish
This method will convert the observable into a connectable observable.
Syntax
publish(mapper=None)
Parameters
mapper: optional. A function used to multicast source values multiple times, without having to do multiple subscriptions.
Example
from rx import create, range, operators as op import random def test_observable(observer, scheduler): observer.on_next(random.random()) observer.on_completed() source = create(test_observable).pipe(op.publish()) test1 = source.subscribe(on_next = lambda i: print("From subscriber 1 - {0}".format(i))) test2 = source.subscribe(on_next = lambda i: print("From subscriber 2 – {0}".format(i))) source.connect()
Output
E:\pyrx>python testrx.py From subscriber 1 - 0.14751607273318490 From subscriber 2 - 0.1475160727331849
ref_count
This operator will make the observable a normal observable.
Syntax
ref_count()
Example
from rx import create, operators as op import random def test_observable(observer, scheduler): observer.on_next(random.random()) source = create(test_observable).pipe(op.publish(),op.ref_count()) test1 = source.subscribe(on_next = lambda i: print("From subscriber 1 - {0}".format(i))) test2 = source.subscribe(on_next = lambda i: print("From subscriber 2 - {0}".format(i)))
Output
E:\pyrx>python testrx.py From subscriber 1 - 0.8230640432381131
replay
This method works similar to the replaySubject. This method will return the same values, even if the observable has already emitted, and some of the subscribers are late in subscribing.
Syntax
replay()
Example
from rx import create, range, operators as op import random from threading import Timer def test_observable(observer, scheduler): observer.on_next(random.random()) observer.on_completed() source = create(test_observable).pipe(op.replay()) test1 = source.subscribe(on_next = lambda i: print("From subscriber 1 - {0}".format(i))) test2 = source.subscribe(on_next = lambda i: print("From subscriber 2 - {0}".format(i))) source.connect() print("subscriber called after delay ") def last_subscriber(): test3 = source.subscribe(on_next = lambda i: print("From subscriber 3 - {0}".format(i))) t = Timer(5.0, last_subscriber) t.start()
Output
E:\pyrx>python testrx.py From subscriber 1 - 0.8340998157725388 From subscriber 2 - 0.8340998157725388 subscriber called after delay From subscriber 3 - 0.8340998157725388
Advertisements