我在Angular中構建了一個警戒器,我需要發出兩個不同的HTTP請求,並基於這兩個請求確定是否繼續。我注意到forkJoin
是這樣做的正確方法,但我無法讓我的火。無法獲得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
。
我導入我的文件的頂部:
import { Observable, BehaviorSubject } from 'rxjs/Rx';
import 'rxjs/add/observable/forkJoin';
是否有別的我失去了一些東西,以便使用forkJoin
?
他們都做火;我懷疑這可能是問題所在,這就是爲什麼我將訂閱添加到頂端,並且我看到它們實際上都會發出2個值(我在其他地方也會調用它們)。我最終看到4個日誌(頂部的2個),但沒有一個來自forkJoin本身。這兩個調用都只是HTTP請求的包裝,所以除了我所知,禁止返回所需的時間都應該發出。 – RhoVisions
當我無法自己測試時,我不知道你的代碼應該做什麼,但是如果你確定它們都發出並且你知道你總是隻想要一個項目,你可以用'take(1)'鏈接它們來完成收到第一個值後。 – martin
我面臨的問題是我需要兩個HTTP請求來完成,因爲我需要從兩個數據來確定如何繼續。有更多數據可以幫助我們解決問題嗎?正如我所提到的,它們實際上只是HTTP調用的包裝器,內置了一些緩存。 – RhoVisions