我正在尝试使用 Observable.forkJoin
并且订阅处理程序永远不会被命中 . forkJoin运算符在我的app的其他部分为我工作,我在非工作场景中可以想到的唯一区别是observable是使用 asObservable()
函数从 BehaviorSubject
对象创建的 .
这个订阅受到了打击
let obs = Observable.of(1);
Observable.forkJoin(
obs
).subscribe(data => {
console.log(data);
});
这个没有
let bs = new BehaviorSubject<number>(1);
let obs = bs.asObservable();
Observable.forkJoin(
obs
).subscribe(data => {
console.log(data);
});
当然,在我的实际用例中,有一个以上的obseravble,这就是为什么我首先使用forkJoin .
是否还需要对BehaviorSubject执行其他操作以使其与forkJoin一起使用?
更新:
在调查了RxJs文档后,我意识到 Observable.combineLatest
更适合我的需要而不是 forkJoin
...链接在这里以防任何遇到这个SO帖子:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-combineLatest
1 回答
问题是
forkJoin
在完成时加入了观察者 .在您的第一个片段中,您正在使用
of
创建一个observable - 在subscribe
之后,立即发出一个值然后完成 .在您的第二个片段中,
BehaviorSubject
未完成 . 如果您要调用complete
,您会看到记录到控制台的值: