【发布时间】:2017-03-21 17:19:41
【问题描述】:
我有以下简单代码:
let a: Observable<any> = Observable.from([1,2,3,4,5]).share();
let b: Subject<any> = new Subject();
a.subscribe(b)
a.subscribe(value => console.log("New observable value: " + value));
b.subscribe(value => console.log("New subject value: " + value));
b.next("value1");
b.next("value2");
我看到的唯一控制台行是对于数组中的每个值都带有“新可观察值:”的控制台行。如果我注释掉第 3 行,那么我会得到所有的“新可观察值”行和“新主题值”行,但主题当然不会得到可观察值(数组的一部分)省略的任何值。
这么基本的问题 - 为什么会这样?为什么我的主题没有看到任何数组元素 1、2、3、4、5?它订阅 observable,所以它应该得到这些事件(share() 应该广播给所有订阅者),但这似乎是我的一个误解。
我在这里寻找的是对该主题进行一次订阅,并查看来自可观察对象的所有值以及通过调用next() 发出的任何值。是我的代码错误,还是我试图以错误的方式做事?
【问题讨论】: