因为
BehaviorSubject
延伸
Subject
和
延伸
Observable
,这三个都是静态的
.create(observer)
方法使用自定义值创建它们。
我能用得很好
Observable.create(observer)
,例如:
a = Rx.Observable.create(obs => {
setInterval(() => {
obs.next('tick');
}, 500)
})
s = a.subscribe(v => console.log(v))
给我期望的输出(
tick
每500毫秒)
但当我替换
可观察的
具有
/
行为主体
a = Rx.Subject.create(obs => {
setInterval(() => {
obs.next('tick');
}, 500)
})
s = a.subscribe(v => console.log(v)); // Nothing
a.next(5); // Still nothing
new
操作员如下:
a = new Rx.Subject();
s = a.subscribe(v => {console.log(v)});
a.next(5) // Ok, got value here
a = Rx.Subject.create();
我仍然无法强制它发出值。
我知道主体是被设计来接收来自外部世界的值的(不是在内部生成它们作为可观察的),因此主体应该被外部代码触发
subject.next('value')
,但我只是好奇,如果它们严格地与可观察物相关,逻辑就在后面
create
进一步的行为应该是一样的。。。
创造
主题
(即使它们的设计不是这样的,但它仍然是可能的)不按预期工作吗?