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