[英]Can't get forkJoin to fire
我正在Angular中構建一個警衛,我需要在其中發出兩個不同的HTTP請求,並根據這兩個請求確定是否繼續。 我注意到forkJoin
是正確的方法,但是我不能讓我開火。
在我的代碼中,我有:
this.userService.watchCurrentUser().subscribe(data => { console.log(data) });
this.orgService.watchOrg().subscribe(data => { console.log(data) });
Observable.forkJoin(
this.userService.watchCurrentUser(),
this.orgService.watchOrg()
).subscribe(data => {
console.log(data);
});
之后添加了前兩個訂閱以測試調用是否實際觸發,它們是; 我看到他們的日志。 但我從來沒有從forkJoin
看到太多forkJoin
。
我在我的文件頂部導入它:
import { Observable, BehaviorSubject } from 'rxjs/Rx';
import 'rxjs/add/observable/forkJoin';
為了使用forkJoin
我還缺少其他東西嗎?
Observable.forkJoin()
要求所有源Observable發出至少一個項目並完成。
你確定你的兩個源Observable都完成了嗎?
如果他們不這樣做(並且根據他們的內部邏輯他們不能)也許你寧願使用zip()
或combineLatest()
。
在你的情況下,一個守衛,你只需要每個流的一個結果。 因此,你應該這樣:
Observable.forkJoin(
this.userService.watchCurrentUser().first(),
this.orgService.watchOrg().first()
).map(data => {
let permitted: boolean;
// check the data you want to.
return permitted;
});
在上面的代碼中,fork組合了兩個observable的第一個結果,兩個結果都將映射到一個布爾值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.