0
が、私は結果の成功した通知のためのいくつかのHTTPリクエストと利用rxjsをしています要求します配列では、いくつかの値を読んで、それぞれのレポートでそれらの値を使って新しいhttpリクエストを作り直します。rxjs HTTPやっ
私は2(メンバー/レポート)+ apprを持っています。 4から8(他のもの)要求。
6〜8回のリクエストが実行されました。成功したハンドラで前の6〜8回のリクエストからすべてのデータを取得します。
rxjsでどうすればいいですか?
UPDATE
詳細について尋ねたOLSNユーザーとしてと彼の懸念私はここ6〜8の要求がどのように見えるべきか(擬似コード)より多くのデータを入れていただきました!私は今、彼を理解して:
getReportings(departmentId: number): Observable<any> {
return Observable.forkJoin(
this.http.get('/api/members/' + departmentId).map(res => res.json()),
this.http.get('/api/reports/' + departmentId).map(res => res.json())
).switchMap((result: [any[], any[]]) => {
let members: any[] = result[0];
let reports: any[] = result[1];
let allNewStreams: Observable<any>[] = [
Observable.of(members),
Observable.of(reports)
];
for(let report of reports)
{
allNewStreams.push(
this.http.get(report.url + ?key1=report.name1?).map(res => res.json()));
}
return Observable.forkJoin(allNewStreams); // will contain members, reports + 4-6 other results in an array [members[], reports[], ...other stuff]
});
}
をあなたはこのように、
switchMap
を使用してストリームを拡張することができ
ありがとうございます!変数の意味は実際にはより良い技術的解決策を可能にしますか? httpリクエストに関するロジックはもうありません。ロジックは、単一のクライアント側のサービスコールが、自分が購読しているすべてのhttpリクエストのデータを取得すると開始します。どのような "完全なデータ"が欠けていますか? – Elisabeth
質問は次のとおりです。他の4-6件のリクエストがどのように決定されましたか、私の理解はどのようにメンバーのレポートデータに依存していても呼び出されない可能性があります。 .itは、レポート内のいくつかのフラグに基づいている可能性があります...または... or..ect ...使用可能な異なるrxjs演算子があるかどうかに依存します - いずれの場合でもif/else -wayは動作しませんより少ない。 – olsn
コードをテストしただけで動作します。しかし、物事が進むにつれ、私はまだ問題があることを実感します。すべての4-8リクエストは、レスポンスにランダムな順序で到着する可能性があります。私はrxjsの著者の脳に残したくありません;-)私の擬似コードに関して、HTTP要求が完了した後にreport_Idを使って4-8リクエストのそれぞれを渡すことは可能ですか?私は各レポートに返信データの関連付けをしたいと思います。レポートの各レポートにIDがあり、各report.urlリクエストのデータ配列を返す代わりに、report_Idと返されたデータを持つオブジェクトを返します:-) – Elisabeth