我正在RxDart中使用autoConnect
,其描述为
返回第一个观察者订阅时自动(最多一次)连接到此ConnectableObservable的Observable。
Observable<int> o = Observable.range(1, 2).publish().autoConnect();
o.listen((v) { print('Observer 1: $v'); });
o.listen((v) { print('Observer 2: $v'); });
await Future.delayed(const Duration(microseconds: 1));
o.listen((v) { print('Observer 3: $v'); });
输出:
Subscriber 1: 1
Subscriber 2: 1
Subscriber 1: 2
Subscriber 2: 2
如您所见,第三个观察者没有输出。
如果我使用ConnectableObservable
并将.connect()
调用放在延迟之前以及使用refCount()
时也会发生类似的输出
但是对于refCount
,我认为这是可以预期的,因为描述如下:
返回与该ConnectableObservable保持连接的Observable 只要至少有一个订阅 ConnectableObservable。
我不理解为什么autoConnect
的行为像refCount
(它们之间有什么区别)
还有为什么延迟后的观察者听不到声音