在rxjs 4或5中是否有方法来检查可观察的是热还是冷?
答案 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