Angular4アプリケーションでObservablesを使用して、以下のような状況が発生しました。概要ページの予約日の概要データを収集したいとします。すべての日を取得することはObservableであり、毎日私は取得しなければならないその日の予約リストを持っています。このリストから、私はその日の要約を計算します。これらすべてのサマリーは、結果として得られる観測値で放出したいものです。RxJS:Observablesの配列の配列を調べる
私はもっと複雑なものをたくさん試しましたが、完了するまで待たずに空の要約を得たところで常に内側の観測可能なものがありました。私は基本に戻る得ている、これらの線に沿って何か作業をする必要があります:
getSummaries(): Observable<BookingDaySummary[]> {
return this.bookingService.getBookingDays().take(1).mergeMap(
days => this.calculateSummaryOfDays(days)
)
};
private calculateSummaryOfDays(days: BookingDay[]): Observable<BookingDaySummary[]> {
const summaries$ = days.map(day => this.calculateSummary(day));
// I'm aware that the next line is not correct.
// Essentially I want the array of observables to complete
// and have an array of the resulting values.
return Observable.merge(summaries$);
}
private calculateSummary(day: BookingDay): Observable<BookingDaySummary> {
// ... logic to get summary from one day
}
しかし、summaries$
の種類がObservable<Observable<BookingDaySummary>
ではなく、観察可能です。だから、私はどうすればObservable<T[]>
を[Observable<T>]
にするのですか?
また、.map
で使用している最も内側のメソッドは、Observable<T>
を生成しようとするときObservableを返すか、着信タイプのマップにする必要がありますか?観察可能な[] 使用Observable.fromがそれらを一つずつを放出し、観察可能と終了あなたにを平らにし、実行するためにmergeMapが続くだろう -
calculateSummaryは実際にObservableを返す必要がありますか? –
@IngoBürk:それは質問の一部でした。私は両方を試みました。メソッド自体はObservable(もう1つのdbフェッチ)を使用しているので、それをする必要があります。 – EluciusFTW