簡體   English   中英

無法讓forkJoin開火

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM