是否存在检查可观察物是热还是冷的方法?

时间:2016-04-07 16:41:40

标签: javascript rxjs

在rxjs 4或5中是否有方法来检查可观察的是热还是冷?

2 个答案:

答案 0 :(得分:2)

不,在构建流时,您需要了解自己的来源。下游观察者不应该关心Observable的温度。它们应该只对源的发射做出反应,而不是源的实现或特定行为,因为这会打破关注点的分离。

请参阅Hot vs. Cold

答案 1 :(得分:2)

从根本上说,热观察是ConnectableObservables,所以这就足够了:

if (typeof myObservable.connect === 'function') {..}

示例:

function checkObservable(observable) {
return observable instanceof Rx.Observable
    ? typeof observable.connect === 'function' ? 'hot' : 'cold' 
    : 'not an observable!'
}

c = Rx.Observable.interval(1000);
h = Rx.Observable.interval(1000).publish();

checkObservable(c);
>> cold

checkObservable(h);
>> hot

checkObservable('ghosts!');
>> not an observable