Я пытаюсь создать наблюдаемую горячую зону. Это означает, что когда у меня есть наблюдатель, наблюдающий наблюдаемое после определенного времени ожидания, он не должен получать значения, которые уже были опубликованы. Я создал следующую программу:
import Rx from "rxjs/Rx";
var x = Rx.Observable.range(1,10).share()
x.subscribe(x => {
print('1: ' + x);
});
setTimeout(() => {
x.subscribe(x => {
print('2: ' + x);
});
}, 1000);
function print(x) {
const element = document.createElement('div');
element.innerText = x;
document.body.appendChild(element)
}
Я ожидаю, что эта программа напечатает от 1 до 10, а затем вторая наблюдаемая ничего не печатает, поскольку значения от 1 до 10 создаются в течение первой секунды. Ожидаемый результат показан ниже.
1: 1
1: 2
..
1:10
Однако я вижу, что он также печатает все значения. Несмотря на то, что я поставил оператор share () позади него. Результат показан ниже.
1: 1
..
1: 10
2: 1
..
2: 10
Может кто-нибудь объяснить мне это?