【发布时间】:2018-07-04 13:41:56
【问题描述】:
我正在尝试创建一个可观察的热范围。这意味着当我有一个观察者在某个超时后观察 observable 时,它不应该接收已经发布的值。我创建了以下程序:
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,然后第二个 observable 什么都不打印,因为值 1 到 10 是在第一秒内产生的。预期的输出如下所示。
1: 1
1: 2
..
1:10
但是,我看到它还打印了所有值。尽管我已将 share() 运算符放在它后面。输出如下所示。
1: 1
..
1: 10
2: 1
..
2: 10
谁能给我解释一下?
【问题讨论】:
标签: rxjs