[英]Angular 2 rxjs observables created from BehaviorSubject are not working with forkJoin
我正在嘗試使用Observable.forkJoin
並且訂閱處理程序永遠不會被擊中。 forkJoin 操作符在我的應用程序的其他部分為我工作,我在非工作場景中能想到的唯一區別是使用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);
});
當然,在我的實際用例中,有不止一個觀察結果,這就是我首先使用 forkJoin 的原因。
是否還需要對 BehaviorSubject 執行其他操作才能使其與 forkJoin 一起使用?
更新:
在對 RxJs 文檔進行了更多調查后,我意識到Observable.combineLatest
比forkJoin
更適合我的需要...鏈接在這里以防遇到此 SO 帖子: http : forkJoin
es6/Observable.js~Observable.html#static-method-combineLatest
問題是forkJoin
在完成時加入可觀察對象。
在您的第一個代碼段中,您正在使用of
創建一個可觀察對象 - 在subscribe
,它會立即發出一個值然后完成。
在您的第二個代碼段中, BehaviorSubject
未完成。 如果您調用complete
,您會看到記錄到控制台的值:
let bs = new BehaviorSubject<number>(1);
let obs = bs.asObservable();
Observable.forkJoin(
obs
).subscribe(data => {
console.log(data);
});
bs.complete();
如果您不想使用完整方法,可以使用 take(1) 管道。
const subjectA = new BehaviorSubject<number>(0);
const a$ = subjectA.asObservable();
Observable.forkJoin(
a$.pipe(take(1))
).subscribe(data => {
console.log(data);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.